OC加强day04-NSString、array、增强for、block、.h中协议的声明

block修改变量

block可以修改全局变量,直接修改其地址中的值

block修改__block修饰的局部变量时,会先将该变量复制一份到自己的堆空间,下面的哥们在使用这个变量,实际上使用的是block复制过来这个变量



.h中协议的声明

在.h中使用@protocol,.h文件不知道协议中都有哪些方法,所以必须在.m中#import协议。@protocol如果修改,则不需要重新编译,提高了效率。

通常协议都用#import,类用@class



NSString

NSComparisonResult 对象方法 compare,挨个字符比较,比较的是ASCii码值


NSCaseInsensitiveSearch:不区分大小写,默认是区分大小写

如果有多个比较条件,加 ‘ | ’ 然后加比较条件


我们用==比较时,比较的是地址而不是值,所以比较字符串时

尽量用compare而不是==  


isEqualToString,比较的是值,如果只是简单的比较值,用isEqualToString


前缀判断:对象方法,hasPrefix:@“”;

返回值是个Bool类型

后缀判断:对象方法,hasSuffix:@“””;

返回值是个Bool类型


查找字符串,str1在str中的位置

从loc开始,长度为Length的范围,正向检索

如:NSRange range = [ str range OfString:str1 ];

range.location与range.length 可通过option加一个NSBackwardSearch: 方法,从后往前搜

range可以转成一个字符串,通过NSStringFromRange(range);

转换过来的是location与length值

NSRange range  =NSMakeRange(3,5);

NSRange range = {.location=3,.length=5};

与转换成字符串的结果都是{3,5}

找得到,返回位置和长度

找不到,返回的位置location是NSNotFound,是一个最大值,长度是0

所以可通过location的最大值来判断是否成功


截取字符串

从指定位置开始截取到最后,包含指定的位置(指下标)

如:NSString *str = [ str substringFromIndex:5];

从开头截取到指定位置,不包含指定的位置(指下标)

如:NSString *str2 =[str substringToIndex:7];

截取指定范围

如:NSString *str3 = [str substringWithRange:NSMakeRange(4,6)];


把字符串str中的a用b来替换

如:NSString *str4=[str stringByReplacingOccurrencesOfString:@“a”withString:@“ b”];


获取字符串长度

字符串.length方法

获取每个字符:characterAtIndex

将字符串转化为int类型,对象方法 intValue

字符串转基本数据类型:你要转成啥类型,就啥Value(对象方法),除了字符串转char * ,用UTF8String方法(对象方法)

char *转成字符串型就用[NSString stringWithUTF8String:char *s],返回值为字符串


对象方法,[stringBytrimmingCharactersInSet:[NScharacterSet whitespaceCharacterSet]],最后一个参数可以修改。


NSMutableString,是NSString的子类

NSString是个不可变字符串,一旦创建成功,其大小地址内容就不会改变。

NSMutableString是一个可变字符串,地址不变,大小内容可变

往可变字符串追加不改变原有值:[string appendString:@“”];没有返回值

按照某种格式追加,[str appendFormat:%d@“”,int];


rangeOfString:@“” ;对象方法,找到字符串,返回值为字符串

selectCharacterInRange:range1;删除字符串range1 对象方法,无返回值

insertString:要插入的字符串,atIndex:插在哪

这两个方法往往搭配使用


[str replaceCharactersInRange:NSMakeRange(0,2) withString:@“”];

用字符串替换这个范围内的字符串


注意:用@“”直接创建字符串时,创建的是不可变字符串


开发中大部分用的都是NSString



NSArray

NSArray是一个类,OC中的数组,尽量用NSSArray代替C语言的数组

只能存放OC中的任意对象

NSArray是不可变的数组,一旦初始化完,长度内容就固定了

可以用%@ 直接打印数组,系统会自动遍历数组,并把所有元素打印出来,元素以nil作为结束

常见用法(对于字符串数组而言):

1.获取元素个数

通过count方法获得数组的长度,返回值是无属性的Int值

2.获得指定位置的元素

最简单:NSString *str = arr[i];

[arr objectAtIndex:i];返回值是个字符串

3.判断数组中是否有haha这个元素

[arr containsObject:@“haha”]; 返回值是BOOL类型

4.获得第一个元素与最后一个元素

[arr firstObject];与[arr lastObject];

5.获得元素@“haha”的角标

[arr indexOfObject:@“haha”];返回值是个无符号int型,如果找不到返回NSNotFound,找的到返回角标


简写方法:

数组的创建:@[];

NSArray *arr = @[@“”,@“”…];

角标遍历:用普通for循环遍历

高级for循环遍历遍历:for(NSString *str in arr){ };把arr数组里的每个值都用一个str接受

block遍历:对象方法,输入en找有block的方法。无返回值,有三个参数

第一个参数:id  obj 代表数组每一个元素

第二个参数:NSUInteger idx 代表是对应的角标

第三个参数:BOOL* stop  用来控制循环结束的

写入文件:

 [arr writeToFile 第一个参数是地址,第二个参数:YES];返回值是BOOL类型,代表是写入成功

读取文件:

[NSSArray arrayWithContentsOfFile:路径];返回值为读取到的内容

把数组元素连接成一个字符串:

[arr componentsJoinedByString:@“ ”]; 返回值是个字符串,参数是用来连接元素的字符串

将字符串切割成数组:

[arr componentsSeparatedByString:@“”];返回值是个数组,参数是用来分割的

数组的追加,全都毫无返回值:

[arr addObjectsFromArray:arr2]; 将数组2拷贝到数组1的后面

[arr insertObjects:@“” AtIndex:int];指定角标插入字符串

[arr removeLastObjects]; 删除单个最后元素

[arr removeAllObjects]; 删除全部元素


NSDictionary

用来存储元素的,里面的每个元素都是以键值对的形式存在

一个键对应一个值,根据键找到值

存储是无序的

快速创建:

格式:@{ };

NSDictionary *dic = @{@“asd”:@“qwe”,@“zxc”:@“cvb ” };

注意:字典中,键不能重复,值可以重复

增强for循环遍历得到的是键,可通过objectForKey: 参数是键

dict[key];得到字典中key键的值,返回值为值得类型

block遍历,三个参数 Key:键 Obj:值 *stop:控制停止

输入enum找到block那个


NSMutableDictionary

添加时,setObject:@“” forKey:@“”; 对象方法,无返回值

等同于dict[@“”]=@“”;

删除时,removeXXX,可根据键来删除,也可全部删除





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值