您的位置:首页 > 职场人生

黑马程序员---成长之路-----OC之基础篇Foundation框架

2015-10-19 01:24 591 查看
------<a href="http://www.itheima.com"target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!

什么是框架

   框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架,通俗点说,其实框架就是一个约束体,就像我们生活中的窗框架一样,只不过时窗框架里放玻璃,而Foundation框架里放类、方法、函数、文档。

NSString字符串比较

字符串比较函数

1、比较字符串大小

字符串根据排列排序 的不同,会有大小的差异,oc中比较字符串大小的方法和C中的方法是

一样的,都是由ASCLL大小来确定大小的

compare方法就是比较字符串大小的方法,其返回结果有三种

实例:
NSString *str1=@"abc";
NSString *str=@"bcd";
//取出每个字符的ASCII,比较ASCII值大小
//compare方法比较大小
//comprare默认的区分大小写的
//compare这个函数,不能增加条件
//NSComparisonResult result=[stri compare:str2 options:NSCaseInsesitiveSearch];比较的时候,不区分大小写

NSComparisonResult result=[str1 compare:str2 ];

//不让区分大小写的需求:
//NSComparisonResult result=[str1 compare:str2 options:NSCaseInsesitiveSearch];
//同时满足即不区分大小写又要比较字符串的字符个数
//NSComparisonResult result=[str1 compare:str2 options:NSCaseInsesitiveSearch | NSNumericSearch];

//常见未枚举方法有三个
//NSCaseInsensitiveSearch :不区分大小写字符
//NSLiteralSearch: 进行完全比较,区分大小写(默认)
//NSNumericSearch:比较字符串的字符个数,而不是字符值

//当需求比较多的时候可以使用“|”来同时满足多个条件
switch(result){

case NSOrderedAscending:

NSLog(@"str1<str2 升序");
break;
case NSOrderedDesending:

NSLog(@"str1>str2 降序");
break;
case NSOrderedSame:

NSLog(@"str1==str2 ");
break;

default:

break;

}


"=="不能够判断字符串是否相等  如:

if(str1==str3)//这里其实比较的是地址

判断字符串内容真正是否相等,使用的是isEqualToString:

注意:这个方法是区分大小写的

NSString前后缀检查

判断字符串前缀

 [str hasPrefix:@"要检测内容"];其中hasPrefix的返回值是BOOL类型的

判断字符串的后缀

[str hasSuffix:@"待检测后缀"] ;返回值也是BOOL类型的

      

字符串查找

查找某个字符串在另外一个字符串中首次出现的位置

原字符串 rangOfString  子字符串 

NSRange range=[str1 rangeOfString:str2];//NSRange类的返回值是长整形

NSLog(@"%lu,%lu",range.location,range.length);//location表示下标,lenght表示长度

NSRange的使用

NSRange是Foundation框架中比较常用的结构体,

NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

NSRange有两个成员

NSRange   location表示下标,NSRange  lenght表示长度

NSRange创建的几种方式
NSRange range;//range 结构体变量
NSRange *r;   //r结构体指针
//range变量的初始化方式
//通过结构体变量访问成员
range. location=3

range.length=2;


结构体变量整体赋值

</pre><pre name="code" class="objc"><pre name="code" class="objc">range=(NSRange){5,3};//强制类型转化
NSRange r2={4,5};//最简单

NSRange r3={.location=3};//只是给结构体变量中的. location成员赋值
OC中新增的
//NSMakeRange 函数的作用给NSRange结构体变量赋值
NSRange  r4=NSMakeRange(3,3);//最好理解



查看结构体变量的值

NSLog(@"%lu,%lu",range.location,range.length);
//可以把结构体变量转化为NSString类型
NSLog(@"%@",NSStringFromRange(range));


字符串的截取和替换

1截取

              //0123456789

NSString str =@"jaeuhnakjd";

1、从xx位置开始,到最后结束(包含XX这个位置)

[NSString *str1=str substeingFromIndex:5]
NSLog(@"str1=%@",str1);


2、从开始位置,到XX位置结束(不包含XX这个位置)

NSString *str2=[str substringToIndex:5];

NSLog(@"str2=%@",str2);


截取一个范围(包含XX这个位置)
NSRange r1={3,4};
NSString *str3=[str substringWithRange:r1];
NSLogg(@"str3=%@",str3);


字符串的替换

替换函数:stringByReplacingOccurrencesOfString:@"原字符串内容"withString:@"替换内容"

NSString的其它用法

字符串和字符串

函数:

intValue

floatValue

...Value

NSString *str=@"1";

NSString *str2=@"3.14";

int a=10;

int b=[str intValue];

a=a+b

NSLog(@"a=%d",a);

//OC的字符串和C的字符串互相转换问题

//char * NSString

//C----->OC对象

char *s="zhangsanfeng";

printf("%s\n",s);

//思路:创建一个OC的字符串对象,用C语言的字符串创建

NSString *str=[NSString stringWithUTF8String:s];

//OC---->C的字符串

NSString *str2=@"zbz";

char *s1=[str2 UTF8String];

printf("s1=%s\n",s1);

NSMutableString类继承NSString类,NSMutableString类好比一个字符串链表,

它可以任意的动态在字符串中添加字符串,删除字符串,指定位置插入字符串,

使用它来操作字符串会更加灵活。

NSMutableString和NSString的区别:

NSMutableString是可变的,里面的文字内容可以随时更改

NSString是不可变的,里面的文字内容是不能进行修改的

可变和不可变是在字符串的内容和地址的前提下说的

NSMutableString可以使用NSString的所有方法

字符串追加方法:

//创建不可改变字符串
NSString *str=@"jack";
str =@"Rose";
//创建可变字符串
NSMutableString *str1=[NSMutableString stringWithFormat:@"jack"];
[str1 appendString:@"&Rose"];

NSLog(@"ste1=%@",str1);


NSMutableString常用方法
//定义一个空的可以改变的字符串
NSMutableString *ste=[NSMutableString string];
//appendFormat格式化的添加字符串

[str appendFormat:@"http://www.baidu.com/%d",100]
//结果:http://www.baidu.com/100

//删除字符串的一部分内容

[str deleteCharactersInRange:NSMakeRange(3,4)];

//结果:httwww.baidu.com/100
//插入字符串
[str intsertString:@"p://" atIndex:3];
结果:http://www.baidu.com/100

//替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(11,5)withString:@"itcast"];

结果:http://www.itcast.com/100


NSArray的介绍和基本使用

NSArray是OC中的数组类,开发过程中尽量使用NSArray替代C语言中的数组

C语言中数组的弊端:

只能存放一种类型的数据(类型必须一致)

不能很方便的动态添加数组元素、不能很方便的动态删除数组元素(长度固定)

NSArray的使用注意:

只能存放任意的OC对象,并且是有序的

不能存储非OC对象,比如int\char\enum\struct

它是不可变的,一单初始化完毕后它里面的内容就永远是固定的,不能删除里面的元素,

也不能再往里面添加元素。

NSArray的创建方式

NSArray的类方法创建

+(instancetype)array;

+(instancetype)arrayWithObject:(id)anObject;

+(instancetype)arrayWithObject:(id)firstObj;...:

+(instancetype)arrayWithArray:(NSArray*)array;

+(id)arrayWithContentOfFile:(NSString *)path://读取一个xml文件。

+(id)arrayWithContentOfURL:(NSURL *)url://读取一个xml文件。

NSArray特点

一旦创建成功,内容不可改变

只能存放OC对象
//1、创建一个空数组
NSArray *arr1=[NSArray array];
//2、创建数组,只有一个元素
NSArray *arr2=[NSArray arrayWithObject:@"1"];
//3、创建数组,有多个元素(最常见,最常用)
NSArray *arr3=[NSArray arrayWithObject:@"one",@"two",@1,nil];
//4、调用对象方法,创建数组
//nil表示数组赋值结束
NSArray *arr4=[[NSArray alloc] initWithObject:@"three",@"four",nil];
//5、用一个已经存在的数组可以创建另外一个数组
NSArray *arr5=[NSArray arrWithArray:arr3];
NSLog(@"%@",arr5);

//注意:不能存放nil,如果非要存进去那么:
NSArray *arr3=[NSArray arrayWithObject:@"one",@"two",[NSNull null],@1,nil];

//结果:arr3=(one,two,"null"1)

//NSArray常见用法:

NSArray *arr3=[NSArray arrayWithObject:@"one",@"two",@1,nil];

//1、获取数组的长度  count获取数组元素的个数
NSLog(@"%ld",arr3.count);
//根据下标,获取下标对应的对象
NSLog(@"%@",[arr3 objectAtIndex:3]);
//返回元素下标
NSUINteger loc=[arr3 indexOfObject:@"three"];
NSLog(@"%ld",loc);
//数组中是否包含了某个元素
if([arr3 containObject:@"three"]){
NSLog(@"包含此元素");

}else{

NSLog(@"不包含此元素");

}

//containObject返回值是BOOL类型

//用简化的方式,来定义和访问数组元素
//1、用简化的方式,定义数组
//格式:@[数组元素]
NSArray *arr=@[@"1",@"2",@"3",@4,@"one"];

//用简化的方式访问数组元素
str=arr[1];//C语言形式的数组元素访问

//NSArray的遍历方法
//对数组进行遍历
//1、普通的方式,通过下标访问
for(int i=0;i<arr.count;i++){

NSLog(@"-->%@",arr[i]);

}
//2、快速枚举法for循环的增强形式

for(NSString *str in arr){

NSLog(@"-->%@",str);

}

//3、使用block的方式进行访问

//NSArray读写文件

//把NSArray的内容写入到文件中
NSArray *array=[NSArray arrayWithObjects:@"asd",@"sdf",@"zbz",nil];
//把NSArray 中的内容写入到文件中
//arr.plist一种特殊的文件格式
BOOL isWrite=[arr writeToFile:@"文件路径"atomically:YES]

if(isWrite){

NSLog(@"写入成功");

}
//从文件中,读取一个数组信息
NSArray *readArr=[NSArray arrayWithContentaOfFile@"路径"];
NSLog(@"readArr=%@",readArr);


NSArray与字符串

//把数组元素链接成字符串
//定义一个数组
NSArray *array=[@1,@2,@3,@4];
//需求:把数组中的元素用“_”连接起来
//[数组 componenteJoinedByString:@"分隔符"];
//2、给一个字符串,分割成一个数组
NSString *str2=@"400-80-12580";
NSArray *arr2=[str2 componentsSeparatedByString:@"-"];
NSLog(@"%@",arr2[1]);


NSMutableArray介绍和使用

NSMutableArray是NSArray的子类,NSMutableArray是可变的,类似于NSMutableString

数组的使用

/
/创建数组

NSMutableArray *arr=[NSMutableArray array];

//创建的时候初始化一个元素
NSMutableArray *arr2=[NSMutableArray arrWithObject:@"one"];

//创建数组的时候,初始化多个元素

NSMutableArray *arr2=[NSMutableArray arrWithObject:@"one",@"two",nil];
//创建一个数组,并且指定长度
NSMutableArray *arr2=[NSMutableArray arrWithCapacity:5];
NSLog(@"@",arr);

//添加元素

[arr addObject:@"fengjie"];
//插入元素到指定位置

[arr1 insertObject:@"zbz" atIndex:0];
//删除元素
//根据对象内容删除
[arr1 removeObject:@"zbz"];
//根据位置删除
[arr1 removeObjectAtIndex:1]//1表示下标
//全部删除
[arr1 removeAllObjects];

4、修改元素
[arr3 replaceObjectAtIndex:1 withObject:@"four"];

//更加简单的方法
arr3[1]=@"five";
NSLog(@"%d",arr3);
5、//查找元素
BOOL isSearch=[arr3 containsObject:@"one"];

6、//交换元素
//1   2   3   4   5
//5   2   3   4   1

NSMutableArray *arr5=[NSMutableArray arrayWithObject:@1,@2,@3,@4,nil];
//可以交换数组元素
[arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];//第0个位置和第五个位置交换

NSDictionary的介绍

//创建空字典
NSDictionary *dict1=[ NSDictionary dictionary]

//创建只有一组键值对的字典
NSDictionary *dict2=[ NSDictionary dictionaryWithObject:@"张三"
forkey:@"zs"];
//创建多组键值对的字典

//value值,key值
NSDictionary *dict3=[ NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",
@"value2",@"k2",nil];
//注意:字典的key值和value值,都必须是对象

//快速创建一个字典
@{,,key值:value值,,,};
NSDictionary *dict4=@{@"zs":@"zhangsanf",@"ls":@"lisi"};
NSLog(@"%@",dict4);//以%@格式打印字典,控制台输出一个{}
获取字典长度
NSLog(@"%lu",dict4.count);
根据key值取出value值
//        zs       zhaosi
NSString *str  =  [dict4 objectForKey:@"zs"];
NSLog(@"str=%@",str);

//结果:str=zhaosi


键值对集合的特点

key值不能重复:

如果重复了,也不会报错,如果重复了,最后添加的将不能报存到字典中

 NSDictionary基本使用方法

字典的遍历:

第一步:获取所有的key

第二步:根据key获取value
for(NSString *key in dict4){

NSLog(@"key=%@,value=%@",key,[dict objectForKey:key]);

}
key     value    stop
dict4 enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){

NSLog(@"%@-->%@",key,obj);
}


 NSDictionary简写及文件操作

获取元素:

以前

[dict objectForKey:@"name"];

现在

dict[@"name"];

文件操作参考上面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息