我正在寻找一种比 NSUserDefaults 更快的方法来保存用户首选项。我发现如果应用程序在写入 NSUserDefaults 后大约 10 秒内被杀死,它不会被永久保存。我使用默认值来保存自定义铃声的路径、自定义图像的路径、地图坐标以及基本上只是用户定义的首选项。使用核心数据是更好的选择吗?SQLite?什么被认为是最快和最轻量级的?
问问题
1500 次
1 回答
16
您需要确保调用同步以立即保存数据。
[[NSUserDefaults standardUserDefaults] synchronize];
来自 Apple 的类参考:
由于此方法会定期自动调用,因此仅当您无法等待自动同步(例如,如果您的应用程序即将退出)或您想要更新用户默认值时才使用此方法,即使您没有进行任何更改。
要回答您的第二个问题,这实际上取决于您要存储多少数据。NSUserDefaults 旨在存储非常少量的数据(用于偏好),例如拨动开关的状态等。您可以在此处存储图像和铃声的路径,但这并不完全可取。我的意思是你可以,但可能不应该。
如果您计划存储许多这些路径,Core Data 是一种更好的方法,因为它具有很强的可扩展性并且性能非常好。所以总的来说,如果你需要存储大量数据,用户 Core Data,或者作为另一种选择,将路径存储在文档目录中的 plist 中。
于 2012-12-20T21:44:11.857 回答