iOS:我应该使用Core Data还是NSUserDefaults?

背景:

我有一个应用程序从数据库中检索餐馆列表,每个应用程序都有一个单独的基本信息数组(小时,名称,地址等)。 我想首先从应用程序服务器上检索该信息,然后将其存储在应用程序本身中,使用NSUserDefaults或Core Data,因为信息不太可能发生变化。 我要存储的最大餐厅数量大约是25,这是一个足够小的数据集来使用NSUserDefaults吗?

我已经查看了类似的问题,存储了超过1,000条记录的数据,但我只存储了一个小数组。

题:

NSUserDefaults比Core Data更容易使用,所以如果可能的话我想避免使用Core Data。 在我的情况下,如果我在NSUserDefaults而不是Core Data中存储我的餐馆列表,是否会出现性能问题?

取决于

  • 尺寸
  • 数据结构
  • 要求重新确保数据的完整性

只是一个包含10或20个“restaruants”的数组,我肯定会存储在NSUserDefaults 。 但只有当我确信这永远不会变得更加复杂时。 因为当您稍后扩展模型但从NSUserData开始时,您可能会继续使用NSUserDefaults ,因为您在升级已安装的应用程序期间避免将其迁移到Core Data。

因此,对于包括引用在内的更复杂的结构,以及当您对应用程序进一步规划可能需要更多实体的更多function时,您应该从头开始使用Core Data。

顺便说一句,它并不像你想象的那么复杂。

但是,您可以使用-writeToFile:atomically:-writeToFile:atomically:将NSArray写入文件,而不是滥用NSUserDefaults。

NSUserDefaults不用于数据,它用于存储简单的键值对,如用户设置和标志。 核心数据起初有点难学,但绝对值得,即使对于简单的应用程序也是如此。

如果它确实是一个不会经常更改的小而简单的数据集,您还可以将一些数据存储在本地plist中(即使用writeToFile方法将NSArrayNSDictionary保存为plist)。 这与使用NSUserDefaults在性能方面没有太大差别,尽管我认为它更干净,更易于管理。 如果它永远不会改变,您还可以通过创建plist文件并将数据填入XCode,将plist与您的应用资源包含在XCode中。

考虑到数据量,用户默认或特定的plist / json文件都很好。 CoreData肯定是过度的。