iOS 4种讲数据持久存储到iOS文件的系统机制:数据库
- 属性列表(NSUserDefaults、plist文件)
- 对象归档(NSCoding)
- iOS嵌入式关系数据库(SQLite3)
- 苹果提供的持久化工具(Core Data)
说道数据持久化都涉及到一个共同的要素。既然是把数据持久存储到iOS文件系统中,那么久涉及到了应用沙盒。缓存
能够尝试使用Xcode创建一个空的应用,而后打开应用目录能够查看到有如下文件网络
一、Documents
①存放内容
咱们能够将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据,可再生的数据文件应该存放在Library/Cache目录下。
②是否会被iTunes同步
是
二、Documents/Inbox
①存放内容
该目录用来保存由外部应用请求当前应用程序打开的文件。
好比咱们的应用叫A,向系统注册了几种可打开的文件格式,B应用有一个A支持的格式的文件F,而且申请调用A打开F。因为F当前是在B应用的沙盒中,咱们知道,沙盒机制是不容许A访问B沙盒中的文件,所以苹果的解决方案是讲F拷贝一份到A应用的Documents/Inbox目录下,再让A打开F。
②是否会被iTunes同步
是
三、Library
①存放内容
苹果建议用来存放默认设置或其它状态信息。
②是否会被iTunes同步
是,可是要除了Caches子目录外
四、Library/Caches
①存放内容
主要是缓存文件,用户使用过程当中缓存均可以保存在这个目录中。前面说过,Documents目录用于保存不可再生的文件,那么这个目录就用于保存那些可再生的文件,好比网络请求的数据。鉴于此,应用程序一般还须要负责删除这些文件。
②是否会被iTunes同步
否。
五、Library/Preferences
①存放内容
应用程序的偏好设置文件。咱们使用NSUserDefaults写的设置数据都会保存到该目录下的一个plist文件中,这就是所谓的写道plist中!
②是否会被iTunes同步
是
六、tmp
①存放内容
各类临时文件,保存应用再次启动时不须要的文件。并且,当应用再也不须要这些文件时应该主动将其删除,由于该目录下的东西随时有可能被系统清理掉,目前已知的一种可能清理的缘由是系统磁盘存储空间不足的时候。
②是否会被iTunes同步
否
//沙盒目录
NSHomeDirectory();
//tmp文件路径
NSTemporaryDirectory();
//Document
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];