Swift - 使用 UserDefaults 保存大量字符串

Swift - Save huge array of strings with UserDefaults

我有一个社交应用程序,用户可以在其中喜欢照片...所以,为了不等待从服务器获取数据,我想将一个字符串数组存储到设备中,其中包含photos' objectIds.. 问题是,考虑到用户可以喜欢数千张照片,使用 UserDefaults 来实现这一点是一种好习惯吗?

编辑 正如 Eric Aya 在评论中指出的那样,当应用程序启动时,NSUserDefaults 不会自动加载到内存中。

NSUserDefaults 在您的应用程序启动时加载到内存中 如果您在 NSUserDefaults 中存储了特别大量的数据,那么 您的应用程序启动所花费的时间 加载 NSUserDefaults 将受到检索数据所需的 IO 量的影响。 NSUserDefaults 的预期用例是存储小型数据集,例如默认用户设置。

Plist 可能是更好的解决方案(NSUserDefaults 只是一个 Plist,不同之处在于它会在应用程序启动时自动为您加载)。当您决定获取 Plist 时,您仍然会遇到与加载时间相同的问题,因为您将文件(Plist)加载到内存中。您将能够使用进度条或 activity 指示器之类的东西来处理此问题,从而为用户提供更好的体验。 比平时等待应用程序打开的时间更长。 CoreData 是另一种选择(通常用于比字符串更复杂的数据结构,另一方面,如果数据的复杂性增加,它使您能够非常轻松地扩展存储需求),这涉及相当陡峭的学习曲线,但它是很棒的功能,Apple 对此进行了详细记录:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/

我还建议将数据存储在服务器上,您可以在服务器上通过 API 公开数据并使用您喜欢的 Plist/CoreData/Whatever 缓存响应。这样,如果您的用户更换设备,他们仍然可以访问远程存储的相同数据。

祝你好运!