iOS 的数据存储选项
Data Storage options for iOS
我正在构建一个应用程序,当无法获得 wifi 或数据连接时需要离线模式。
我想知道以下情况的最佳解决方案是什么。
假设我的应用允许用户查看、添加、修改日历上的事件。
为了让应用程序离线工作,我只需要存储当前日期的事件。这可能是 1 - 10 个事件。每个事件都有名称、描述和各种其他小属性。
我一直在查看 coreData,想知道这对我需要的东西来说是否有点矫枉过正。我不需要镜像整个数据库或类似的东西。
我可以建设性地使用 NSUserDefaults 来存储这个信息之王吗?
NSUserDefaults 在您可以存储的类型和数量方面有哪些限制。
离线版本可能需要存储比上述更多的实体,所以它是一种可行的存储数据的方法,前提是数据量不是很大。
任何建议都很好。
Coredata 一开始可能有点矫枉过正,但随着您的应用程序的增长,您的数据模型也会随之增长。 CoreData 专为此类更改而设计。
只要对象符合 NSCoding 协议,NSUserDefaults 就会存储任何内容,但它并不意味着存储大量信息。除此之外,在 NSUserDefaults 中获取数据可能很困难,而在 CoreData 中则相当容易。另请注意,在 NSUserDefaults 中存储对象时,对象之间的关系无法管理。
NSUserDefaults
NSUserDefaults
真正用于存储小块数据,例如设置、偏好和个人值。
NSUserDefaults
提供简单的学习曲线和线程安全实现。
核心数据
- 学习曲线可能有点陡峭
CoreData
和相关的 类 提供了将您的实体放入 UITableView 的简单方法,例如 NSFetchedResultsController
.
CoreData
抽象掉了很多杂乱无章的事情,否则你必须自己处理这些事情,比如对象列表、一对多或多对多关系,或者约束对象属性,到一个漂亮干净的面向对象的接口中
CoreData
为您管理保存和撤消功能。它有一个持久存储,跟踪变化,并可以在任意次数自动刷新到磁盘
但是,如果您是 Cocoa 的新手,我会避免 CoreData
,让自己有机会先学习基础知识。
如果我必须选择,我会直接进入 CoreData
。这对于小型项目也很有意义。 NSUserDefaults
不打算用作数据库(所有操作都在主线程上 运行)。
我正在构建一个应用程序,当无法获得 wifi 或数据连接时需要离线模式。
我想知道以下情况的最佳解决方案是什么。
假设我的应用允许用户查看、添加、修改日历上的事件。
为了让应用程序离线工作,我只需要存储当前日期的事件。这可能是 1 - 10 个事件。每个事件都有名称、描述和各种其他小属性。
我一直在查看 coreData,想知道这对我需要的东西来说是否有点矫枉过正。我不需要镜像整个数据库或类似的东西。
我可以建设性地使用 NSUserDefaults 来存储这个信息之王吗? NSUserDefaults 在您可以存储的类型和数量方面有哪些限制。
离线版本可能需要存储比上述更多的实体,所以它是一种可行的存储数据的方法,前提是数据量不是很大。
任何建议都很好。
Coredata 一开始可能有点矫枉过正,但随着您的应用程序的增长,您的数据模型也会随之增长。 CoreData 专为此类更改而设计。
只要对象符合 NSCoding 协议,NSUserDefaults 就会存储任何内容,但它并不意味着存储大量信息。除此之外,在 NSUserDefaults 中获取数据可能很困难,而在 CoreData 中则相当容易。另请注意,在 NSUserDefaults 中存储对象时,对象之间的关系无法管理。
NSUserDefaults
NSUserDefaults
真正用于存储小块数据,例如设置、偏好和个人值。NSUserDefaults
提供简单的学习曲线和线程安全实现。
核心数据
- 学习曲线可能有点陡峭
CoreData
和相关的 类 提供了将您的实体放入 UITableView 的简单方法,例如NSFetchedResultsController
.CoreData
抽象掉了很多杂乱无章的事情,否则你必须自己处理这些事情,比如对象列表、一对多或多对多关系,或者约束对象属性,到一个漂亮干净的面向对象的接口中CoreData
为您管理保存和撤消功能。它有一个持久存储,跟踪变化,并可以在任意次数自动刷新到磁盘
但是,如果您是 Cocoa 的新手,我会避免 CoreData
,让自己有机会先学习基础知识。
如果我必须选择,我会直接进入 CoreData
。这对于小型项目也很有意义。 NSUserDefaults
不打算用作数据库(所有操作都在主线程上 运行)。