我正在尝试确定某些应用程序状态,特别是列表中的选定项,是否应该存储在 Core Data 或 NSUserDefaults 中。
一般来说,我认为应用程序的偏好和状态应该保留在 NSUserDefaults 中,而模型级数据应该保留在其他地方,比如 Core Data。到目前为止,我的模型是:
- 是否应该存储数据?如果用户不合理地期望它是,则将其丢弃(例如,光标位置未保存在 TextEdit 中)
- NSUserDefaults:
- 如果应用程序是多文档,该设置将适用于所有文档
- 可以想象,数据将在首选项中配置
- 将数据放在模型之外对测试是有意义的(用一个模型存储交换多个默认值)
- 模型级
- 数据显然属于模型级对象的属性
- 数据足够大,将其存储在 NSUserDefaults 中会导致性能问题
- 用户重新创建数据会很困难或很耗时(他们肯定会认为丢失这些信息是“数据丢失”)
我计划将某些实体的排序顺序存储在 Core Data 中。如果没有此信息(即“sortIndex”或“order”属性),每个实体实例都必须使用来自用户默认值的数据进行扩充。
然而,在模型中存储状态似乎是一个滑坡。如果我存储排序顺序,那么存储选择似乎也是合适的,因为它们都是列表的状态。我的用例的选择数据实际上可能非常大。具体来说,一个列表中的图标取决于其每个子列表中的选择。
是否有人对 NSUserDefaults 与数据模型有严格的规定?