天天看点

iOS Foundation框架常用类结构的常用用法

慕课网 https://www.imooc.com/learn/420 学习笔记

iOS的Foundation框架常用类结构的常用用法

1.NSString(不可变字符串)

1.oc和C语言字符串之间的类型转换

char *s=“This is a string of c”;//c语言子串以字符数组的方式存储

NSString *str=@“This is a string of oc”;//oc字符串为NSString类型,双引号前有@号表示这是一个NSString类型

//字符串 c转到oc

NSString *str1=[NSString stringWithUTF8String: s].

//字符串 oc转c

char * s2=[str UTF8String];

2.创建字符串

//下面创建的字符串,不需要自己释放内存

NSString *str3=@“IOS”

//下面创建的字符串,需要自己释放内存

NSString * str4=[[NSString alloc] init];

str4=@“IOS”

3.格式化字符串

int a=10;

int b=20;

//以下str5为 @“a10 b=10”

NSString *str5=[NSString stringWithFormat:@“a=%d b=%d”,a,b];

4.拼接字符串

//将str3拼接在str6d的后面

NSString *str6=[str stringByAppendString:str3];

5.大小写转换

NSString *str7=@“aBCDef”

//转换为小写,str8为@“abcdef”:

NSString *str8=[str7 lowercaseString];

//转换为大写,str9为@“ABCDEF”:

NSString *str8=[str7 uppercaseString];

6.前缀后缀的判断

NSString *str10=@“www.imooc.com”;

//判断前缀,以下hasPrefix为YES

BOOL hasPrefix=[str10 hasPrefix:@“www.”];

//判断后缀,以下hasSuffix为YES

BOOL hasSuffix=[str10 hasPrefix:@".com"];

7.两字符串是否相同

NSString * str11=@“hello”;

NSString * str12=@“hello”;

//判断str11是否与str12一致,isEqual为YES

BOOL isEqual=[str11 isEqualToString:str12];

8.比较字符串

使用NSComparisionResult,它有三个结果NSOrderedAscending,NSOrderedSame,NSOrderedDescending,分别是大于等于小于。

9.分割字符串

//按照指定字符分割字符串 ,以下以逗号分割

NSString * str13=@“a,b,c,d,e,f,g”;

NSArray *strArray=[str13 componentsSeparatedByString:@","];

10.截取字符串

//按照范围截取字符串

NSRange range=NSMakeRange(1,5);//设定一个范围

NSString *str14=[str13 substringWithRange:range];//截取范围内的字符串,str14为@",b,c,"

//从某一位开始截取后面的字符串

NSString *str15=[str13 substringFromIndex:2];//从下标2开始将其后所有字符都截取。str15为@“b,c,d,e,f,g”

//从某位向前截取所有字符

NSString *str16=[str13 substringToIndex:7];//截取下标7之前(不包括7)的字符。str16为@“a,b,c,d”

//字符串取指定位置字符

char c=[str13 characterAtIndex:0];取下标为0的字符,c为’a’

11.字符串长度

int len=[str13 length];//len为str13的长度,为13

12.字符串查找

NSString *str17=@“ab cd ef gh ij ab”

//查找指定字符串的位置,range1.location为0,range1.length为2

NSRange range1=[str17 rangeOfString:@“ab”];//只查出第一个字符串出现的位置

13.字符串替换

NSString *str18=@“Hello iOS,Hello imooc”;

//替换某一个范围的内容

NSString *str19=[str18 stringByReplacingCharactersInRange:NSMakeRange(0,5) withString:@“你好”];

//str19为@“你好 iOS,Hello imooc”

//用指定字符串替换源字符串的子串

str20=[str18 stringByReplacingOccurrencesOfString:@"Hello"withString: @“你好”];

//str20为@“你好 iOS.你好 imooc”

14.读取文件

文件来源1.本地 文件 2.网络文件

NSString *str21=“www.baidu.com”;

//网络路径

NSURL *httpURL=[NSURL URLWithString:str21];

//本地路径

NSURL *fileURL=[NSURL fileURLWithPath:str21];

//读取网络文件

NSString *httpStr=[NSString stringWithContentsOfURL:httpURL encoding: NSUTF8StringEncoding error:nil];

//读本地文件

NSString *fileStr=[NSString stringWithContentsOfFile: @"这里是文件路径"encoding: NSUTF8StringEncoding error:nil];

//写入文件

NSString * str22=@“Hello Visitor”;

BOOL isOK=[str22 writeToFile:@“这里写文件地址” atomically:YES encoding:NSUTF8Encoding error:nil];

//写入文件成功则isOK为YES

2.NSMutableString (可变字符串)

它是NSString的子类,可以使用所有NSString的方法,并且拥有一些自己特有的方法:

1.实例化

//这里预先给NSMutableString 设定容量为10,超过时会自行扩容。这样可以提升性能

NSMutableString *str=[[NSMutableString alloc] initWithCapacity:10];

2.赋值

[str setString:@“Hello”];

3.追加字符串(在原有字符串后追加)

[str appendString:@“world”] //现在str为@“Hello world”

//格式化追加

int a=10;

[str appendFormat:@" %d",] //现在str为@“Hello world 10”

4.替换字符串

NSRange range=[str rangeOfString:@“world”];

[str replaceCharactersInRange:range withString:@“iOS”];

//现在str为@“Hello iOS10”

5.插入字符串

[str insertString:@“A” atIndex:6];

//现在str为@“Hello AiOS10”

6.删除字符串

NSRange range1=[str rangeOfString:@“AiOS”];

[str deleteCharactersInRange range1]

//现在str为@“Hello 10”

3.NSArray (不可变数组)

oc数组可以存储不同类型的对象,但只能存储对象。数组的内存空间是连续的,它实际存储的是对象的指针,占用空间较小,数组最后以nil结尾

1.实例化

NSArray *array1=[[NSArray alloc]initWithObject:@“1”, @“2”, @“3”, @“4”,@“5”,nil];

2.数组的长度

int len=(int)array1.count;//len为为5

3.判断数组是否包含对应对象

BOOL isHaveOne=[array1 containsObject:@“1”];//isHaveOne为YES

4.获取数组中指定位置的元素

NSString *strLast=[array1 lastObject];//取得数组最后一个元素

NSString *strFirst=[array1 firstObject];//取得数组第一个元素

NSString *strThird=[array1 objectAtIndex:3];//取得数组下标为3的元素

5.查找对象下标(如果没有该元素,返回-1)

int index=[array1 indexOfObject:@“3”];//index为2

6.数组的遍历

//基本for循环通过下标逐一取出

for(int i=0;i<array1.count;i++){

NSString *str=[array1 objectAtIndex:i];

//对str进行操作

}

//快速枚举(要求数组中的元素类型都是一致的)

for(NSString *str2 in array1){

//对str2进行操作

}

4.NSMutableArray (可变数组)

拥有NSArray所有特性,并添加自己的可特性

1.实例化

NSMutableArray *array= [[NSMutableArray alloc]init];

2.添加元素

//添加单个元素

NSString *str1=@“p1”;

NSString *str2=@“p2”;

[array addObject:str1 ];//将str1添加进array

//添加一个数组里的所有元素

[array addObjectsFromArray:array1];

3.删除元素

[array removeAllObjects];//删除数组中的所有元素

[array removeLastObject];//删除最后一个元素

[array removeObject:str1];//删除指定元素

[array removeObjectAtIndex:0];//删除指定下标元素

4.交换元素位置

[array exchangeObjectAtIndex:0 withObjectAtIndex:1];//交换夏标为0和1 元素

5.NSDictionary 字典

字典的存储内存不是连续的,用key和value进行对应(键值对的方式)

1.初始化

NSDictionary *dict1=[NSDictionary dictionaryWithObject:@“1” forKey:@“a” ];

//上面的方法不常用,一般用下面的方式创建,参数分别是是键和值的数组

NSDictionary *dict2=[NSDictionary dictionaryWithObjects:

[NSArray arrayWithObjects:@“1”,@“2”,@“3”,nil]

forKeys:[NSArray arrayWithObjects:@“a”,@“b”,@“c”,nil] ];

//简便写法

NSDictionary *dict3=@{@"1":@"a",@"2":@"b",@"3":@"c"};

2.键值对数量

int count=(int)[dict2 count];

3.根据键取得值

NSString *value=[dict2 valueForKey:@“b”];//value为@“2”

NSString *value2=[dict2 objectForKey:@“b”];//value2为@“2”

NSArray * allValues=[dict allValues];//所有字典中的值组成的数组

NSArray * allKeys=[dict allKeys];//所有字典中的键组成的数组

4.遍历字典

所有遍历都是根据键遍历

for(NSString * key in dict2){

NSString *value=[dict2 objectForKey:key];

}

//迭代器,枚举器

NSEnumerator *en =[dict2 keyEnumerator];

id key=nil;

while(key=[en nextObject]){

NSString *value=[key objectForKey:key];

6.NSMutableDictionary 可变字典

1.初始化

NSMutableDictionary * dict=[[NSMutableDictionary alloc] init];

2.添加(修改)键值对

[dict setObject:@“1” forKey:@“a”];

[dict setObject:@“2” forKey:@“b”];

3.删除键值对

[dict removeObjectForKey:@“b”];//删除对应键的键值对

[dict removeObjectsForKeys:array];//删除数组array中元素的对应键

[dict removeAllObject];//全部删除