我有一个社交应用,用户可以喜欢照片...所以,为了不等待服务器提取数据,我想将包含照片objectId的字符串数组存储到设备中。问题是,考虑到用户可能会喜欢成千上万张照片,使用UserDefaults是否是一种好的做法?
编辑 正如Eric Aya在评论中指出的那样,NSUserDefaults在应用程序启动时不会被自动加载到内存中。如果您在NSUserDefaults中存储了大量数据,则加载NSUserDefaults所需的IO量将影响到您的数据。NSUserDefaults的预期使用情况是存储小型数据集,例如默认用户设置。Plist可能是更好的解决方案(NSUserDefaults只是一个Plist,唯一的区别是应用程序启动时它会自动加载)。当您决定抓取Plist时,您仍然会遇到相同的加载时间问题,因为您需要将文件(Plist)加载到内存中。您可以通过进度条或活动指示器来处理这个问题,从而为用户提供更好的体验。CoreData是另一个选择(通常用于比字符串更复杂的数据结构,另一方面,如果数据的复杂性增加,它可以轻松地扩展您的存储需求),它涉及相当陡峭的学习曲线,但它是一个很棒的功能,并且由苹果公司进行了很好的文档记录:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/ 我还建议将数据存储在服务器上,在那里可以通过API公开它并使用Plist / CoreData /任何您喜欢的缓存响应。这样,如果您的用户更改设备,则仍然可以访问相同的数据,因为它是远程存储的。祝你好运!