1

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

使用 NSUserDefaults 会不会有问题?

4

3 回答 3

2

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

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

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

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

使用其中只有一百个人的类型应该没什么大不了的,只要NSArray数组中没有存储大量相关数据,您就可以使用它。PeopleNSUserDefaultsPeople

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

于 2013-05-08T00:26:19.300 回答
1

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

于 2013-05-08T00:45:52.507 回答
1

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

于 2013-05-08T04:51:30.960 回答