【问题标题】:Deciding to use Core Data or NSUserDefaults决定使用 Core Data 还是 NSUserDefaults
【发布时间】:2014-07-24 20:24:23
【问题描述】:

我的应用中有一个功能,允许用户邀请他们的朋友(通过 facebook 或他们地址簿中的朋友)。大多数人的朋友数量少于 5K,而有些人的朋友数量更多(可能最多 10K 朋友?)。

我想跟踪他们邀请的朋友,以免他们再次邀请他们。为了做到这一点,我在NSUserDefaults 中保存了一个朋友的字典来存储这些信息。我想知道NSUserDefaults 是否足够,或者我是否需要使用Core Data

另外,我计划添加一项功能,让他们可以邀请朋友参加特定活动。 (我们的应用程序上有很多活动。)如果我想跟踪哪些朋友被邀请参加了哪些活动,那么我应该使用Core Data 吗? NSUserDefaults 就足够了吗? (我假设它不会)。最后,应该使用Core Data 还是应该将其保存在服务器端?

【问题讨论】:

  • 将字典存档到 docs 文件夹。如果您更新它(迁移),Core Data 会小心。还有一个错误,每次添加字段时,我都必须通过工具重新生成标题,我不能只更新标题而不失败

标签: ios objective-c core-data nsuserdefaults


【解决方案1】:

NSUserDefaults 真正用于存储小块数据,例如设置、偏好和个人值。

您应该使用 Core Data 来存储大量元素。至于您的最后一个问题,没有什么可以阻止您同时使用 Core Data 和后端来存储数据。事实上,有一些框架可以帮助实现这一点。看看RestKit

【讨论】:

  • 我的问题的第一部分怎么样。我可以为此使用 NSUserDefaults 吗?
  • 你可以,但取决于结构可能有多大,你可能也想坚持使用 Core Data。
  • 为什么不推荐呢?在 NSUserDefaults 中存储大量数据时是否会对性能产生影响?
  • @mark 没错。 UserDefaults 存储在一个 plist 中,当您想要写入或访问它时,它会完整地保存和加载。如果您将大量数据(例如巨大的列表)放在那里,它只会变得低效。不过,我不确定您实际上需要多少数据才能开始遇到性能问题。
【解决方案2】:

您的假设是正确的! NSUserDefaults 不足以存储和查询海量数据。如果您有一个后端(服务器上的数据库)来存储事件及其受邀者以保持用户信息的一致性(如果用户从其他应用程序支持设备登录回您的应用程序,那么他将获得他存储的所有信息,这是值得建议的) )。还可以以您可以轻松查询所需信息的方式在数据库中创建表。例如,对于每个事件,都有一些存储/更新其邀请信息的字段。当您想知道您的单个查询应该带有您所有需要的结果时。这会让你的应用对用户产生非常好的效果,因为你的应用运行得非常快。

【讨论】:

    【解决方案3】:

    您打算在字典中保存什么?如果只是 s 字符串就可以了,但是如果你打算存储图片,我会推荐 Core Data。

    【讨论】:

    • 我会推荐图像文件系统。
    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多