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
方法将NSArray
或NSDictionary
保存为plist)。 这与使用NSUserDefaults
在性能方面没有太大差别,尽管我认为它更干净,更易于管理。 如果它永远不会改变,您还可以通过创建plist文件并将数据填入XCode,将plist与您的应用资源包含在XCode中。
考虑到数据量,用户默认或特定的plist / json文件都很好。 CoreData肯定是过度的。
- Swift:发送到实例的无法识别的选择器
- 子视图显示在父UIView的范围之外
- 通过UITapGestureRecognizer获取UIScrollView中的触点
- 偶尔iOS 6 MKMapView在initWithFrame中崩溃
- 如何从GMSMapView中删除GMSPolygon
- IOS – 如果文件太大而无法将所有文件加载到内存中,我如何解密一个大文件?
- iTunes Store操作失败。 没有find合适的应用logging。 validation您的包标识符“org.cocoapods.Alamofire”是否正确
- Xcode 6.4计划选项在El Capitan Beta中消失
- 如何在iPhone应用程序中创build自定义UIAlertView