Swift - 用UserDefaults保存大量字符串
我有一个社交应用程序,用户可以在其中照片...所以,为了不等待从服务器获取数据,我想存储到设备,包含照片'objectIds'的字符串数组。问题是,考虑到用户可以像数千张照片一样,使用UserDefaults来实现这一点很好吗?Swift - 用UserDefaults保存大量字符串
编辑 正如Eric Aya在评论中指出的,当应用程序启动时,NSUserDefaults不会自动加载到内存中。
NSUserDefaults的加载到内存中,当你的应用程序启动
如果你有一个特别大的量存储在NSUserDefaults的数据,那么所花费的时间
您的应用程序推出
加载NSUserDefaults的将IO所需的量受到影响检索您的数据。 NSUserDefaults的预期用例是存储小组数据,例如默认用户设置。
一个Plist可能是一个更好的解决方案(NSUserDefaults只是一个Plist,
不同之处在于它在应用程序启动时自动加载
)。当您决定抓取Plist时,您仍然会遇到与加载时间相同的问题,因为您将要将文件(Plist)加载到内存中。您将可以通过进度条或活动指示器来处理此问题,从而为用户提供更好的体验。
比必须等待比平常更长的时间才能打开
。 CoreData是另一种选择(通常用于比字符串更复杂的数据结构,另一方面,如果数据复杂性增加,它可以非常容易地扩展存储需求),但涉及相当陡峭的学习曲线,但它是精彩的功能,并由苹果公司详细记录:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/
我还建议将数据存储在服务器上,您可以通过API公开它并使用Plist/CoreData /无论您喜欢如何缓存响应。这样,如果您的用户更换设备,他们仍然可以访问远程存储的相同数据。
祝你好运!
投票结束,因为这不是一个具体的问题,但简短的回答:不。用户默认值是存储首选项的一种方式,而不是数据。在Documents目录中使用JSON文件,使用Core Data,使用普通的sqlite ...但不是User Defaults。 – Cyrille
不知道为什么它不是一个正确的问题,但谢谢你的答案! –
我同意西里尔如果你需要任何确认。在手机上存储数据可能有点棘手。在深入研究CoreData之前,我会花一些时间研究一些教程,但是值得学习!我没有太多与其他方法混淆。 – Sethmr