您的位置:首页 > 其它

文件数据持久化

2015-07-15 16:22 85 查看
概论

所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在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"];

数据持久化:/article/1317566.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: