小编orq*_*que的帖子

应用程序状态何时属于Core Data而不是NSUserDefaults?

我正在尝试确定某个应用程序状态,特别是列表中的选定项目是否应存储在Core Data或NSUserDefaults中.

一般来说,我认为应用程序首选项和状态应该保留在NSUserDefaults中,模型级数据应该保留在其他地方,比如Core Data.到目前为止,我的模型是:

  • 数据应该存储吗?如果用户不合理地期望它,则抛出它(例如,光标位置不保存在TextEdit中)
  • NSUserDefaults的:
    1. 如果应用程序是多文档,则该设置将适用于所有文档
    2. 可以想象,数据将在首选项中配置
    3. 将模型外部的数据用于测试(使用一个模型存储交换多个默认值)
  • 模型级
    1. 数据显然属于模型级对象的属性
    2. 数据足够大,将其存储在NSUserDefaults中会导致性能问题
    3. 用户重新创建数据将是困难或耗时的(他们肯定会考虑丢失此信息"数据丢失")

我计划在Core Data中存储一些实体的排序顺序.如果没有此信息(即"sortIndex"或"order"属性),则必须使用来自用户默认值的数据来扩充每个实体实例.

但是,在模型中存储状态似乎是一个滑坡.如果我存储排序顺序,那么它似乎也适合存储选择,因为它们都是列表的状态.我的用例的选择数据实际上可能非常大.具体地说,一个列表中的图标取决于每个子列表中的选择.

有没有人对NSUserDefaults与数据模型有一个强硬路线?

cocoa core-data objective-c nsuserdefaults

6
推荐指数
1
解决办法
1748
查看次数

标签 统计

cocoa ×1

core-data ×1

nsuserdefaults ×1

objective-c ×1