【NSArray数组的持久化 Objective-C语言】

一、我们昨天讲了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(@“读取不成功”);

}

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

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

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

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

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

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值