一、我们昨天讲了NSString类,

1.NSString类,它其实存储我们的字符串对象,关于NSString类,你需要掌握如下几点,第一个

1)NSString类的本质:是1个类

2)初始化:@“jack”,要知道这个本质什么,这其实是个什么,是1个NSString对象

3)字符串的恒定性

4)NSString常用的5个方法

i. stringWithFormat

ii. length

iii. characterAtIndex

iv. isEqualToString

v. strWithUTF8String

5)NSString的其他方法:

i. str.UTF8String

ii. writeToFile

iii. stringWithContentsOfFile

iv. URLWithString (这是URL的方法)

v. stringWithContentsOfURL

vi. writeToURL

vii. compare

viii. compare options:NSCaseInsensitiveSearch

ix. compare options:NSNumericSearch

x. hasPrefix

xi. hasSuffix

xii. rangeOfString

xiii. NSMakeRange (这是Range的方法)

xiv. substringFromIndex

xv. substringToIndex

xvi. substringWithRange

xvii. stringByReplacingOccurrencesOfString

xviii. str.intValue

xix. stringByTrimmingCharactersInSet

xx. uppercaseString

xxi. lowercaseString

xxii. stringByTrimmingCharacterInSet:[NSCharacterSet lowercaseLetterCharacterSet]

xxiii. stringByTrimmingCharacterInSet:[NSCharacterSet uppercaseLetterCharacterSet]

xxiv. stringByTrimmingCharacterInSet:[NSCharacterSet characterSetWithCharactersInString:@“jing”]

xxv. appendString (这是NSMutableString的方法)

xxvi. appendFormat (这是NSMutableString的方法)

2.NSMutableString类

1)NSMutableString类,是NSString类的子类

2)可变

3)使用场景:大批量字符串拼接时候

3.NSArray类

1)数组

2)特点:

i. 只能存储OC对象

ii. 长度固定

3)创建 取出 遍历 其他的常用

4.NSMutableArray类

1)是NSArray类的子类

2)元素可以新增删除

5.NSNumber类

二、NSArray的持久

1.例如,我这儿有一个NSArray

NSArray *arr = @[@“jack”,@“rose”,@“lili”,@“Lucy”];

for(NSString *str in arr)

NSLog(@“%@”,str);

输出:jack

rose

lili

Lucy

2.这样就可以数组中的每一个元素的值输出来了吧,

但是有一个问题,我这个程序结束以后,这个数组中的元素,还在不在不在了,我程序结束以后,这个数组还在不在不在了,

那我就有一个想法了,我能不能把数组中的元素保存起来

3.将数组信息数组元素的值)保存起来,保存磁盘上,下次我程序再运行时候,我再把它还原回来

数据持久

数组对象有1个方法,叫做writeToFile

[arr writeToFile:(nonnull NSString *) atomically: (BOOL)];

这个方法做了什么事情,把这个arr数组写入到1个文件里面

好,给个路径,/Users/Apple/Desktop/abc.

记住,如果是数组,这个后缀名,你给个plist

/Users/Apple/Desktop/abc.plist

plist文件,是1个属性列表文件,

这个atomically:需不需要先写临时文件,如果成功,再移动目标路径,给个NO

NSLog(@“YES”);

打印1个YES吧

运行一下,在/Users/Apple/Desktop/路径下,出现了一个abc.plist文件,

打开看一下啊,双击

出来4个元素,上面还有一个Root,这个Root是个什么类型的,Array,那就说明咱们这个文件里保存的是1个数组,这个数里面有几个元素,4个,哪4个元素,

item 0 :就是第0个元素,第0个元素什么类型的,String类型的,值是什么啊,jack

item 1 : String类型的,值是rose

item 2 : String类型的,值是lili

item 3 : String类型的,值是Lucy

你看,它就用文件的方式,把它保存起来了

4.plist文件:属性列表文件

这个文件可以保存数组,把数组中的元素,保存在这个文件中

三、存起来之后,我能不能读出来呢,能不能把这个文件还原成1个数组呢

1.还原1个数组:

NSArray *arr = [NSArray arrayWithContentsOfFile:(non null NSString *)];

这个方法的名字叫做:arrayWithContentsOfFile

这个方法的签名如下

+ (NSArray *)arrayWithContentsOfFile:(NSString *)file];

是不是给它1个文件路径:

[NSArray arrayWithContentsOfFile:@“/Users/Apple/Desktop/abc.plist”];

这句话一执行,它就会把这个plist文件里面保存的数组还原回来,还原到这个arr数组里面去,

for(NSString *str in arr){

NSLog(@“%@”,str);

}

我输出一下,看看能不能输出出来

输出:jack

rose

lili

Lucy

2.那我能不能把plist文件改一下,是不是本来有4个元素,

我在文件里加一个:

item 4 : String类型的,lilei

item 5 : String类型的,poly

Ctrl + S 保存一下

时候,我再读:

输出:

jack

rose

lili

Lucy

lilei

poly

3.所以,这个原理,是这样的:

1)第一步,将数组的信息存储到plist文件中,就会将数组的所有的元素存储到这个文件中,这个方法叫做writeToFile,这个方法的签名如下

– (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

这个方法的作用就是将数组存进去

2)第二步,读出来,将plist文件中的数据还原为1个数组,这个方法叫做arrayWithContentsOfFile,这个方法的签名如下

+ (nullable NSArray< ObjectType> *)arrayWithContentsOfFile:(NSString *)path;

这个nullable什么意思啊,它返回的值,可能为空可能nil

如果你这个路径写错了,返回值就是nil了,

所以,你要判断它到底有没有读取成功,你就只需要判断一下,

if(arr != nil){

NSLog(@“读取成功”);

for(NSString *str in arr){

NSLog(@“%@”,str);

}

}

else

{

NSLog(@“读取不成功”);

}

读取成功之后,我就把它输出,就可以了,

就这两个方法,需要掌握,因为怎么说呢,这个方法我们后面天天用,

为什么天天用,大家思考一下,我们用这两个方法,能够实现功能什么呢,是不是可以程序运行期间的数据给它永久保存起来啊,

如果你像我们之前,都是用变量来保存数据的话,程序一运行完,是不是数据没有了啊,如果我下次再想把那个数据再拿出来呢

所以,有些数据,我想永久保存,比如,我举个例子给你啊

我们要做一个聊天软件,我想把聊天记录永久保存起来,明白我的意思吧,你想想,按照我们之前的写法我用变量,是不是把聊天记录都保存在变量里面啊,或者放在数组里面啊,那么很明显啊,你程序一退出聊天记录绝对没了啊,下次如果,你下次再执行程序的时候,可不可能把上次的那个聊天记录拿出来啊,不可能的啊,那怎么办,

对了,每次在你退出程序的时候,或者说,我每隔十分钟,或者每隔五分钟,或者说,你每发一条消息,我就把你发的这条消息记录起来,存起来,用这种方式啊,存起来,

然后呢,下次我启动程序的时候,我怎么样,我再读出来,然后还原回去,不就可以了嘛,

所以它最大的特点,在于持久化数据,可以把数据永久的保存下来

原文地址:https://blog.csdn.net/madoca/article/details/127802385

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_38742.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注