我有一个社交应用程序,用户可以在其中照片...所以,为了不等待从服务器获取数据,我想存储到设备,包含照片'objectIds'的字符串数组。问题是,考虑到用户可以像数千张照片一样,使用UserDefaults来实现这一点很好吗?Swift - 用UserDefaults保存大量字符串
1
A
回答
1
编辑 正如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 /无论您喜欢如何缓存响应。这样,如果您的用户更换设备,他们仍然可以访问远程存储的相同数据。
祝你好运!
相关问题
- 1. Swift 3用UserDefaults保存数组
- 2. 使用UserDefaults在swift中保存高分
- 3. 用UserDefaults保存数组
- 4. Swift:无法将数组保存到UserDefaults
- 5. 保存并读取数组到UserDefaults swift
- 6. 获取并设置与UserDefaults不保存字符串
- 7. 如何将对象保存到UserDefaults或钥匙串中 - Swift 3
- 8. 保存对象的UserDefaults
- 9. 大写的字符串(SWIFT)
- 10. NSNumber swift字典到userdefaults swift3
- 11. 用UserDefaults保存标签和步进器(Swift)
- 12. Swift UserDefaults(2017)
- 13. 在mongodb中保存大字符串
- 14. 保持较大的字符串存储
- 15. 用xml保存字符串
- 16. 用JFileChooser保存字符串
- 17. 使用UserDefaults保存地图注释
- 18. 如何保存NSManagedObject在userdefaults
- 19. 保存结构到UserDefaults
- 20. userdefaults用法问题swift 3
- 21. 将具有NSCoding的自定义SWIFT类保存到UserDefaults
- 22. Swift UserDefaults返回零
- 23. 如何使UserDefaults保存登录状态?
- 24. swift中字符串变量占用的内存
- 25. 如何将字符串标记保存为字符变量?
- 26. 如何保存字符串?
- 27. 保存字符串反向
- 28. 从Servlet保存字符串
- 29. 保存字符串在Python
- 30. 保存字符串反向
投票结束,因为这不是一个具体的问题,但简短的回答:不。用户默认值是存储首选项的一种方式,而不是数据。在Documents目录中使用JSON文件,使用Core Data,使用普通的sqlite ...但不是User Defaults。 – Cyrille
不知道为什么它不是一个正确的问题,但谢谢你的答案! –
我同意西里尔如果你需要任何确认。在手机上存储数据可能有点棘手。在深入研究CoreData之前,我会花一些时间研究一些教程,但是值得学习!我没有太多与其他方法混淆。 – Sethmr