首页 > 代码库 > 黑马程序员-Foundation-几种常用方法(三)
黑马程序员-Foundation-几种常用方法(三)
------- IOS培训、android培训、java培训、期待与您交流! ----------
Foundation中最常用的类
NSString、NSArray、NSSet、NSDictionary 、NSDate 和基类NSobject
NSString(不可变) 子类 NSMutableString(可变)
NSArray 子类 NSMutableArray
NSSet 子类 NSMutableSet
NSDictionary 子类 NSMutableDictionary
NSString
一、 字符串的创建
1、 直接创建字符串
1 NSString *s1 = @"jack";2 3 NSString *s2 = [[NSString alloc] initWithString:@"jack"]; // 不写这种4 5 NSString *s3 = [[NSString alloc] initWithFormat: @" ege is %d ", 10 ];
2、 C语言字符串和OC字符串的相互转换
1 NSString *s = [[NSString alloc] initWithUTF8String:"jack"]; // 用于把C语言字符串转为OC字符串2 3 const char *c = [s UTF8String]; // 把OC字符串转为C语言字符串4 5
3、 把文件内容读取为字符串
1 NSString *s = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/test.txt" encoding:NSUTF8StringEncoding error(涉及到中文转码就用这个编码):nil];
4、 字符串的导出
[@"Jack \n Jack" WriteToFile:@"/Users/apple/Desktop/test.txt"atomically:YES encoding:NSUTF8StringEncoding error(涉及到中文转码就用这个编码):nil]; (写YES的好处是当文件写到一般段了后,文件不会保存。NO则会保存)
5、 URL读取
NSURL什么资源都能读取,网络的和本地的以及服务器上的,只要是资源就能读取。
URL:资源路径路径
协议头://路径 file:// ftp:// http:weibo.com.a.png
格式: 协议头://路径, 网络资源的协议头一般是http, 本地文件file, ftp服务器资源是ftp。URL字符串必须有协议头。
1 NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/test.txt"]; 注意前面有三个斜杠, 前两个是固定写法, 第三个是根路径 /Users。另外, [NSURL fileURLWithPath:@"/Users/..."]; 这种已经说了是 fileURL 了就可以不加 file:// 了。2 3 NSString *s = [[NSString alloc] initWithContentsOfURL:URL encoding:NSUTF8StringEncoding error:nil];
使用URL也可以读取远程文件, 比如网页文件:
1 NSURL *baiduURL = [NSURL urlWithString:@"http://www.baidu.com"]; // 可以查看源代码,发现编码是UTF82 3 NSString *s = [NSString stringWithContentsOfURL:baiduURL encoding:NSUTF8StringEncoding error:nil]; // 读取的是网页的代码
6、 使用类方法
一般都会有一个类方法跟对象方法配对
1 NSString *s = [NSString stringWithFormat:@"%d", 5];2 3 NSString *s = [NSString stringWi thContentsOfURL: ...];
注意:NSString的类方法通常都以string开头。
NSMutableString
1、 创建
NSMutableString继承NSString,创建可变字符串。
1 NSMutableString *ms = [NSMutableString stringWithFormat:@"age is 10"];2 3 NSString *us = [NSString stringWithFormat:@"age is 10"];
注意: 决定这个字符串是可变的还是不可变的, 取决于右边调用方法的类, 而不是左边对象指针的类型。
2、 内容修改
1> 添加内容:
1 [ms appendString:@"ABC"]; // 拼接内容到字符串后面2 3 [ms appendFormat:@"%d", 5];
2> 替换内容:
1 range = [ms rangeOfString:@"no"]2 3 [ms replaceCharactersInange:range withString:@"yes"];
3> 插入内容:
1 [ms insertString:@"hello" atIndex:3]; // 在这个index前面插入
4> 删掉内容:
1 NSRange range = [ms rangeOFString:@"10"];2 3 [ms deleteCharactersInRange:range]; // 删掉部分内容4
NSArray
NSArray是OC的有序数组,可以存储任何类型的OC对象,但是不能储存nil、int、float、enum、struct等类型的数据。
一、 创建
1 NSArray *array = [NSArray array]; // 空数组2 3 array = [NSArray arrayWithObject:@"123"]; // 创建有一个元素的数组4 5 array = [NSArray arrayWithObjects:@"A", @"B", nil]; // 创建一个有多个元素的数组
注意:nil是来标记数组的结束。
1 NSArray *array = @[@"Jack", @"Rose", @"123"]; // 使用编译器特性来方便快速的创建数组
NSMutableArray
NSMutableArray是NSArray的子类,是可变数组,可以修改存放的内容。
一、 创建
1 NSMutableArray *mArray = [NSMutableArray arrayWithObject:@"1"];
二、 修改元素
1 //添加: 2 3 [mArray addObject:@"2"]; 4 5 [mArray insertObject:@"3" atIndex:0]; 6 7 // 删除: 8 9 [mArray removeObject:@"2"]; 10 11 [mArray removeObject:@"2" inRange:range];12 13 [mArray removeObjectAtIndex:1];14 15 [mArray removeLastObject];16 17 [mArray removeAllObjects];18 19 [mArray removeObjectsInRange:range];20 21 [mArray removeObjectsInArray:array]; //删除和array共有的元素22 23 // 替换:24 25 [mArray replaceObjectAtIndex:0 withObject:@"100"];26 27 [mArray replaceObjectsInRange:range withObjectesFromArray:array];28 29 [mArray exchangeObjectAtIndex:1 withObjectAtIndex:3];
NSSet:
NSSet和NSArray的对比
1、共同点
都是集合,都能存放多个oc对象。
只能存放oc对象,不能存放非oc对象类型
如:(基本数据类型:int、char、float等,结构体,枚举)
本身都不可变,都有一个可变的子类
2、不同点
NSArray有序,NSSet是无序存放的。
NSMutableSet
可随时往里面加对象,但是加进去的对象是没有顺序的
1 //1、 添加元素2 3 [set addObject:@"jack"];4 5 //2、 移除元素6 7 [set removeObject:@"jack"];8 9 [set removeAllObjects]
黑马程序员-Foundation-几种常用方法(三)