我正在寻找一种比NSUserDefaults更快的方式来保存用户首选项。我发现如果应用程序在写入NSUserDefaults的大约10秒内被杀死,它将不会被永久保存。我使用默认值来保存自定义铃声的路径,自定义图像的路径,地图坐标,以及基本上只是用户定义的首选项。使用核心数据是更好的选择吗? SQLite的?什么被认为是最快和最轻的?
答案 0 :(得分:16)
您需要确保调用synchronize以立即保存数据。
[[NSUserDefaults standardUserDefaults] synchronize];
来自Apple的class reference:
因为此方法会定期自动调用, 只有在您不能等待自动时才使用此方法 同步(例如,如果您的应用程序即将退出)或 如果要将用户默认值更新为磁盘上的内容,即使如此 你没有做任何改变。
要回答第二个问题,这实际上取决于您想要存储多少数据。 NSUserDefaults旨在存储非常少量的数据(用于首选项),例如切换开关的状态等。您可以在这里存储图像和铃声的路径,但这并不是完全可取的。我的意思是你可以,但可能不应该。
如果计划存储许多这些路径,核心数据是一种更好的方法,因为它具有很高的可扩展性并且运行良好。总的来说,如果你需要存储大量数据,用户核心数据,或者作为另一种选择,存储文档目录中plist中的路径。