文件数据持久化

概论

所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案:

  • plist文件(属性列表)

  • preference(偏好设置)

  • NSKeyedArchiver(归档)

  • SQLite 3

  • CoreData

iOS程序默认情况下只能访问程序自己的目录,这个目录被称为“沙盒”。沙盒的目录结构如下:

应用程序包   NSString *path = [[NSBundle mainBundle] bundlePath];

在沙盒中有几个这样的文件夹:(这些文件都是位于Home路径下的)
(1)Documents: 该文件夹用于程序数据文件写入到该目录下,iTunes同步该应用时会同步此文件夹中的内容,用于存储用户数据以及需要备份的数据。
(2)Library:include Caches and Preferences .
       Preferences: iTunes同步,该应用时会同步此文件夹中的内容,用于放置用户的偏好数据,你不能直接创建偏好的设置文件,应该使用NSUserDefaults的类来获取和设置应用程序偏好
       Caches:iTunes不同步,用于存放应用程序专用的支持文件,保存应用程序再次启动过程需要的信息。
(3)tmp:Tunes不同步,临时文件夹,下次启动就会将该文件夹中的东西删除。

获取目录的方法:

(1)获取Home目录的方法:
NSString *homeDir = NSHomeDirectory();

(2)获取Documents目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];

(3)获取Caches目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDir = [paths objectAtIndex:0];

(4)获取tmp目录路径的方法:
NSString *tmpDir =  NSTemporaryDirectory();

(5)获取应用程序程序包中资源文件路径的方法(获取apple.png);
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];

数据持久化:http://www.cocoachina.com/ios/20150720/12610.html

原文地址:https://www.cnblogs.com/liyanlan/p/4648709.html