什么是“大量数据”来决定是否使用NSUserDefaults或CoreData?

时间:2013-05-08 00:04:22

标签: iphone ios core-data nsarray nsuserdefaults

我只将一个NSArray存储到NSUserDefaults,但是这个数组最终可能内部有很多对象。

使用NSUserDefaults会出现问题吗?

3 个答案:

答案 0 :(得分:2)

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

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

迁移数据也是Core Data的另一大好处。当您需要更改数据结构时,您只需创建一个简单的迁移,它就会自动完成。相反,如果您在用户默认值中有NSArrayNSDictionary,则必须迭代整个事物并尝试更改数据结构或将旧密钥名称迁移到新的密钥名称。这不是一件容易的事。

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

使用NSArray这类只有一百人的People类型应该不是什么大不了的事情,你只需要使用NSUserDefaults就可以了People数组中没有存储大量关联数据。

老实说,我创建的每个应用程序都需要除基本用户首选项之外的任何类型的数据存储,现在使用Core Data。我不会把时间浪费在财产清单或用户默认值上,我建议你不要这样做。

答案 1 :(得分:1)

NSUserDefaults因为某种原因被命名。它旨在为您的应用程序存储少数用户首选项和设置,而不是大部分数据。如果您要存储类似于数据库的任何内容,NSUserDefaults不是实现它的方法 - 请按照@ iWasRobbed的回答使用Core Data。

答案 2 :(得分:1)

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