所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。
iOS主要有四种方式实现数据的持久化
1 属性列表(plist)
属性列表是一种明文的轻量级存储方式,其存储格式有多种,最常规格式为XML格式。在我们创建一个新的项目的时候,Xcode会自动生成一个info.plist文件用来存储项目的部分系统设置。如保存用户的用户名和密码(密码要进行加密)。
NSArray; NSMutableArray;
NSDictionary; NSMutableDictionary;
NSData; NSMutableData;
NSString; NSMutableString;
NSNumber; NSDate;
plist只能用上面几种类型进行读取,由于属性列表本身不加密,所以安全性几乎可以说为零。因为,属性列表正常用于存储少量的并且不重要的数据。
在程序启动后,系统会自动创建一个NSUserDefaults的单例对象,[NSUserDefaults standardUserDefaults] 存储的目录就在沙盒中的 /Library/Prefereces 目录下.我们可以获取这个单例来存储少量的数据,它会将输出存储在.plist格式的文件中。其优点是像字典一样的赋值方式方便简单,但缺点是无法存储自定义的数据。
当然也可以自己创建plist文件,然后指定存储位置
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"]; NSArray *array = @[@"123", @"456", @"789"]; [array writeToFile:fileName atomically:YES]; NSArray *result = [NSArray arrayWithContentsOfFile:fileName]; NSLog(@"%@", result);
2 数据归档(NSKeyedValueArchiver)
3 数据库(sqlite 3)
4 CoreData(sqlite)
参考资料
http://www.jianshu.com/p/86ea6da905cf
http://www.cocoachina.com/ios/20150720/12610.html
keychain存储
https://my.oschina.net/zhuzhu1223/blog/635023
NSUserDefaults的安全性讨论
http://blog.csdn.net/kaka_2928/article/details/51326035