------<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"];
文件操作参考上面