一、沙盒

  1. 沙盒也叫沙箱,英文standbox,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在沙盒机制下,每个程序之间的文件夹不能互相访问。iOS系统为了保证系统安全,采用了这种机制
  2. iOS 应用程序在安装时,会创建属于自己的沙盒文件,应用程序不能直接访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。
  3. 应用程序中所有的非代码文件都保存在沙盒中,比如图片、声音、属性列表,sqlite数据库和文本文件等。
  4. 沙盒的的根目录有三个文件夹,分别是 Documents,Library,tmp
  •  Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录
  •  tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除,应用没有运行时,系统也可能会自动清理该目录下的文件,iTunes不会同步该目录,iPhone重启时该目录下的文件会丢失。
  •  Libaray:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录。
  •  Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,一般存放体积比较大,不是很重要的资源
  •  Libaray/Preferences:保存应用的所有偏好设置,ios的Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。

 

二、数据持久化存储

       数据持久化存储即将数据保存到硬盘中,在运用程序进程被Kill掉或者手机重启后,数据不会丢失,仍然可以保存到沙盒中,供程序读写操作。

  1. plist文件(序列化): plist文件是将某些特定的类,通过XML文件的方式保存在目录中。
  2. preference(偏好设置): 偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。
  3. 偏好设置是以key-value的方式进行存储和读写,使用到一个单例对象NSUserDefaults
  4. NSKeyedArchiver(归档):归档在iOS中是另一种形式的序列化,只要遵循了NSCoding协议的对象都可以通过它实现序列化。由于绝大多数支持存储数据的类都遵循了NSCoding协议,因此,对于大多数类来说,归档相对而言还是比较容易实现的。
  5. SQLite3 : 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
  6. CoreData : Core Data框架为我们提供了一种比操作SQL关系数据库更简单的数据管理方式,并且集成IDE和Xcode非常方便