美文网首页
iOS数据持久化方案

iOS数据持久化方案

作者: _我和你一样 | 来源:发表于2019-05-10 15:22 被阅读0次

iOS数据持久化方案有5种

  • 用户偏好设置UserDefaults
  • CoreData
  • Archiving存档(很少用于持久化,但是stroyborads的持久化方案)
  • SQLite(通常也少使用,除非你有遗留的SQL数据库需要访问)
  • File System(iOS下面有一个unix文件系统,你可以有限制的进行读写)

Archiving

有一种机制可以让任何对象图持久化,不仅仅是数组,字典,日期等等。

比如在Xcode中建立的图层树,这些很显然是非常复杂的对象。

需要对象图中的所有对象实现下面的协议

func encode(with aCoder:NSCoder)
init(coder:NSCoder)

SQLite

SQL 在单一文件中

快速,低内存,可靠

开源,捆绑在iOS中

并非对适用于所有,比如视频或者一系列的声音,图片。

非基于服务技术,并发性不好,但对于手机来说不是什么大问题

C风格的API,不是面向对象的的风格,

被Core Data 所使用

文件系统

访问Unix文件系统需要四步

  1. 获取路径的根目录(比如Documents目录,Caches目录)
  2. 添加路径(添加文件名或者文件名在内的路径)
  3. 读写文件(通常是Datahove属性列表)
  4. 使用FileManager管理文件系统(创建目录,遍历目录下的文件,获取文件属性,删除文件等)

iOS系统文件像一个通常的unix文件系统,以/开头。和通常的unix系统一样,文件是保护的,因此你看不到所有的内容。

为什么只可以在沙盒中执行写入操作

因为:

  1. 安全性(无人可以破坏你的应用)
  2. 隐私策略(其他应用无法查看你的应用数据)
  3. 易清理(删除应用时,应用写入的所有数据都可以被清理掉)

沙盒中有什么

程序包目录 application bundle directory(二进制文件,storyboards文件,图片等)此路径是不可写的。

文档目录Documents directory(通常在这里存储由用户产生的内容)

缓存目录Caches directory (存储一些临时文件,不会被iTunes同步)

其他路径

相关文章

网友评论

      本文标题:iOS数据持久化方案

      本文链接:https://www.haomeiwen.com/subject/bpyaoqtx.html