【问题标题】:What is exactly "a large set of data" to decide whether to use NSUserDefaults or CoreData?究竟是什么“大量数据”来决定是使用 NSUserDefaults 还是 CoreData?
【发布时间】:2013-05-02 02:05:15
【问题描述】:

我只将一个 NSArray 存储到 NSUserDefaults,但这个数组最终可能会在其中包含许多对象。

使用 NSUserDefaults 会不会有问题?

【问题讨论】:

  • 有多少个对象?五十?五千?
  • 没有限制,这是我的疑问……一开始可能很少,但是是的,以后可能会达到一万或一千万
  • 如果可以达到数千,请使用CoreData。

标签: iphone ios core-data nsarray nsuserdefaults


【解决方案1】:

我会说使用 Core Data 只是因为您想在处理两个或多个类别或“实体”中超过一百个数据对象时简化您的生活。

使用 Core Data 意味着您在加载时不会将整个数据集转储到内存中。相反,您使用的是所谓的faults,它会在需要加载其他关系和相关数据时触发。

迁移数据也是 Core Data 的另一大优势。当您需要更改数据结构时,您只需创建一个简单的迁移,它会自动为您完成。相反,如果您在用户默认值中有NSArrayNSDictionary,则必须遍历整个内容并尝试更改数据结构或将旧键名迁移到新键名。不是一件容易的事。

Core Data 的另一个好处是它可以与 UITableViewUICollectionView 无缝协作,以智能地搜索并仅加载数据集中的相关项目,这有助于提高应用的整体性能。这一切都是通过NSFetchedResultsController 完成的。

使用一种类型的NSArray,例如People,其中只有一百个人应该没什么大不了的,只要People 数组没有,您就可以使用NSUserDefaults。里面没有存储很多相关的数据。

老实说,我创建的每个应用程序都需要除了基本用户偏好之外的任何类型的数据存储,现在都使用 Core Data。我不再将时间浪费在属性列表或用户默认设置上,我建议您也不要这样做。

【讨论】:

  • @MarcosReboucas 很高兴为您提供帮助!如果这回答了您的问题,请按我的答案旁边的复选标记关闭问题。
【解决方案2】:

NSUserDefaults 被命名是有原因的。它旨在为您的应用存储少量用户偏好和设置,而不是其大部分数据。如果您要存储任何类似于数据库的东西,NSUserDefaults 不是实现它的方法——根据@iWasRobbed 的回答,请使用 Core Data。

【讨论】:

    【解决方案3】:

    NSUserDefaults 仅用于存储有限数量的数据。如果您有大量数据,您应该使用 coreData。

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 2014-10-28
      • 2012-08-27
      • 2010-11-12
      • 2011-03-18
      • 2011-01-22
      相关资源
      最近更新 更多