首页 > 代码库 > 黑马程序员-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-几种常用方法(三)