黑马程序员---学习笔记24:Foundation框架

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


Foundation框架
框架是由许多类,方法,函数,文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。Mac操作系统下大约有80个框架,为程序开发奠定基础的就是Foundation框架。
Foundation.h头文件实际上是导入其他所有的头文件。

如何使用Foundation框架
导入头文件就可以了,#import

NSString字符串比较:
比较字符串大小:compare 方法返回的结果有三种:NSOrderedAscending(前小后大),NSOrderedSame,NSOrderedDescending(前大后下).
比较原则:取出每个字符,比较每个字符ASCII码大小
NSString *str1 =@”abc”;
NSString *str2 =@”bce”;

NSComparisonResult(枚举类型) result = [str1 compare:str2];(这个函数是区分大小写的)
NSComparisonResult(枚举类型) result = [str1 compare:str2 option:NSCaseInsensitiveSearch];
(这个函数不区分大小写)
NSComparisonResult(枚举类型) result = [str1 compare:str2 option:NSCaseInsensitiveSearch|NSNumericSearch];(增加字符个数比较,可以增加限制条件)

使用“==”是不能比较字符串内容是否相等的。
判断字符串内容是否相等,区分大小写,使用的是isEqualToString:

NSString前后缀检查和搜索。
判断一个字符串是否是个网址:
NSString *url=@”http://ios.tiheima.com”;
If([url hasPrefix:@”http://”]|| [url hasPrefix:@”https://”]){
NSLog(@”是”);
}else{
NSLog(@”不是”);

}
检查字符串后缀: hasSuffix:@””;

字符串查找:(子字符出现在父字符串首次出现的位置,字符串下标从0开始)
//结构体类型 结构体变量
NSRange range=[字符串1 rangOfString: 字符串2];
NSLog(@”%lu,%lu”,range.location,range.length);

如果查找到了,返回字符串出现的下标和长度,如果查找不到返回最大的长整型值和0

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

range变量的初始化方式:
1) 通过结构体变量访问成员
Range.location =7;
Range.length=3;
2)结构体变量整体赋值
Range =(NSRange){5,3};
NSRange r2={5,3};

3)NSRange r3={.location=3};

4) OC中新增的
NSRange r4=NSMakeRange(3,5);

想要快速查看NSRange中的内容,可以将这个对象转换成NSString类型的
NSLog(@”%@”,NSStringFromRange(r4));


字符串的截取和替换:
1) 从XXX位置到结尾
NSString str1=[str subStringFromIndex:5];(从第五个位置,包含第五个)
2) 从开头到XX位置
NSString str2=[str subStringToIndex:5];(不包含第五个)
3) 截取一定法范围 range
NSRange r1={3,4};
NSString str3=[str subStringWithRange:r1];(包含位置的边缘)


字符串替换:
-(NSString *)stringByReplacingOccurrencesOfString: (NSSting *)target withString: (NSString *) replacement;

字符串中转换整型数值,str1=@“123”;int b=[str1 intValue];
floatValue转换成float类型
doubleValue转换成double值

OC和C的字符串互相转换
c------- >OC
Char *s[]=”zhangsanfeng”;
NSString *str=[NSString stringWithUTF8String:s];

OC----- >C
Char *s1=[str UTF8String];


NSMutableString基本概念(内存空间和内容都可变)
NSMutableString *str2=[NSMutableString stringWithFormat:@”Jack”];
[str2 appendingString:@”Rose”;];

常用方法:

格式化添加字符串
[str appendFormat:@www.baidu.com/%d,100];

删除一部分字符串
[str deleteCharactersInRange:NSMakeRange(3,4)];返回值是void

插入一个字符串
[str insertString:@”abc” atIndex:3];

常见错误:
1) 给可变的字符串赋值不可变的值
2) str.string=@””;用空把原来str字符串中的内容给覆盖了


NSArray:
只能存储任意的OC对象,并且是有顺序的
他是不可变的,一旦初始化完毕后,它里面的内容就永远固定了,不能删除里面的元素,也不能添加里面的元素。


NSArray *arr=[NSArray array];//快速创建数组

用%@就可以打印出整个NSArray数组的内容,系统会自动加上小括号,每一个内容会换行

获取数组长度:arr.count
根据下标,获取下标对应的对象[arr3 objectAtIndex:2]
返回元素的下标[arr3 indexOfObject:@”three”]
数组中包含某个元素:[arr3 containsObject:@”three”]

用简化的方式,类定义和访问数组
1) 定义数组
格式:@[数组元素]
NSArray *arr =@[@”1”,@”2”,@”3”,@4,@”ONE”];

2)用简化的方式访问数组
Str =arr[1];

对数组进行遍历
1) 普通方式,通过下标访问
For循环
2) 快速枚举法,for循环增强形式
for (NSString *str in arr){
NSLog(@”->%@”,str);
}

3) 使用block的方式
数组元素 指针下标 是否停止
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
If(idx==2){
*stop=YES;//停止了,类似于C语言的break
}else{
NSLog(@”idx=%ld,obj=%@”,idx,obj);
}
}]

NSMutableArray使用
1) 创建数组
NSMutableArray *arr=[NSMutableArray array];
创建时候初始化一个元素
创建时候初始化多个元素
创建一个数组,并指定长度。

2) 添加元素
[arr addObject:@”feng”;]
插入元素
[arr insertObject:@”feng” atIndex:1 ;]

3) 删除元素
[arr removeObject:@”feng”];
[arr removeObjectAtIndex:3];

4) 修改元素
[arr replaceObjectAtIndex:1 withObject:@”four”];
arr[3]=@”four”;
5) 查找元素
BOOL isSearch =[arr containsObject:@”four”];
6)交换元素()
[arr3 exchangeObjectAtIndex:0 withObjectAtIndex:4];

NSDictionary使用
内容是不可变的,初始化后不可以修改,里面包含键值对。
1) 创建空字典
NSDictionary *dic1 [NSDictionary dictionary];
有一组键值的字典
NSDictionary *dic2= [NSDictionary dictionaryWithObject:@”张三”forKey:@”zs”];
注意:
字典的key值和value值,都必须是对象,不能是基本类型数据
快速创建字典:
NSDictionary *dic3 =@{@”zs”, @”zhangsan”, @”ls”, @”lisi”};
用NSLog(@”%@”,dic3);就可以快速打印出字典中的值,并且,键值是无序的,中间用等号相连

根据key值取出value值,
NSString *str=[objectForKey:@”zs”];
字典的遍历
第一步:获取所有的key
第二部:根据key获取value
for (NSString *key in dict4){
NSLog(@”key=%@,value =%@”,key,[dict4 objectForKey:key]);
}
简便方法:
[dict4 enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){
NSLog(@”%@->%@”,key obj);
}]

把字典内容保存到文件
BOOL isWrite=[dict writeToFile:@”/Users/name/Desktop/dict.plist” atomically:YES];

从文件中读取字典:
NSDictionary *readDict =[NSDictionary dictionaryWithContentsOfFile:@” /Users/name/Desktop/dict.plist”];
注意事项:
1)键值对不能重复,重复了也不能报错,后出现的不能保存在字典中


NSFileManger介绍
是用来管理文件系统的。
用来进行常见的文件/文件夹 操作
NSFileManager使用了单例模式singleton

1) 判断文件是否存在
调用defaultManager创建一个文件管理的单例对象
单例对象:在程序运行期间只有一个对象存在
NSFileManager *fm =[NSFileManager defaultManager];
BOOL isYES=[fm fileExistsAtPath:filePath(路径字符串)];
2) 判断是否是一个目录
[fm fileExistsAtPath:filePath isDictionary:&isDir];
3) 判断文件是否可读
IsYES= [fm isReadableFileAtPath:filePath];
4) 是否可写
IsYES= [fm isWritableFileAtPath:filePath];


常见结构体
1) CGPoint/NSPoint
用来表示二维平面的一个点
包含两个成员 X(x方向) Y(x方向)
常用初始化
CGPoint c1;
c 1.x =20;
c 1.y =100;
CGPoint c2 ={10,10};
CGPoint c3 ={.x=10};
OC 中特有的赋值
CGPoint c4= CGPointMake(10,10);

CGSize/NSSize
用来表示平面的面积
CGSize s2 =CGSizeMake(100,100);
NSSize ns=NSMakeSize(10,10);

CGRect 和NSRect
表示在平面上左上角是某个点的矩形区域
Origin 表示矩形的左上角
Size表示矩形的大小

CGRect r1;
r1.origin.x=0;
r1.origin.y=0;

r1.size.width=200;
r1.size.height=200;

OC特有方式
CGXXXX CGXXXXMake
NSXXXX NSMakeXXXX

!!!快速查看结构体内容的方法:转换成字符串格式
NSLog(@”%@”,NSStringFromRect(结构体名) );



你可能感兴趣的:(黑马程序员---学习笔记24:Foundation框架)