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

7 篇文章 0 订阅

慕课网 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];//全部删除

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值