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