背景
我有一个应用程序,它从数据库中检索餐馆列表,每个应用程序都有一个关于它们的基本信息的单独数组(小时,名称,地址等)。我想首先加载应用程序从服务器上检索该信息,然后将其存储在应用程序本身中,使用NSUserDefaults或Core Data,因为信息不太可能改变。我将存储的最大餐厅数量约为25,是否足够小,可以使用NSUserDefaults?
我已经查看了类似的问题,存储了超过1,000条记录的数据,但我只存储了一个小数组。
问题:
NSUserDefaults比Core Data更容易使用,所以如果可能的话我想避免使用Core Data。在我的情况下,如果我在NSUserDefaults而不是Core Data中存储我的餐馆列表,是否会出现性能问题?
答案 0 :(得分:4)
取决于
只是一个10或20" restaruants"我当然会存储在NSUserDefaults
中。但只有当我确信这永远不会变得更加复杂时。因为当您稍后扩展模型但从NSUserData开始时,您可能只是因为在升级已安装的应用程序期间无法将其迁移到Core Data而保留NSUserDefaults
。
因此,对于包括引用在内的更复杂的结构,以及当您的应用程序进一步计划实现可能需要更多实体的更多功能时,您应该从头开始使用Core Data。
顺便说一句,它并不像你想象的那么复杂。但是,您可以使用-writeToFile:atomically:
和-initWithContentsOfFile:
将NSArray写入文件,而不是滥用NSUserDefaults。
答案 1 :(得分:1)
NSUserDefaults
不适用于数据,它用于存储简单的键值对,如用户设置和标志。核心数据起初有点难学,但绝对值得,即使对于简单的应用程序也是如此。
如果它确实是一个不经常变化的小而简单的数据集,您还可以将一些数据存储在本地plist中(即保存NSArray
或NSDictionary
以使用plist writeToFile
方法)。这与使用NSUserDefaults
在性能方面有很大不同,尽管我认为它更清洁,更易于管理。如果它永远不会改变,您还可以通过创建一个plist文件并将其填入数据中,在XCode中包含带有您的应用资源的plist。
答案 2 :(得分:1)
考虑到数据量,用户默认值或特定的plist / json文件都很好。 CoreData绝对是过度的。