如果应用程序在10秒内被杀,NSUserDefaults将丢失新保存的数据

时间:2012-12-20 21:43:05

标签: ios core-data nsuserdefaults

我正在寻找一种比NSUserDefaults更快的方式来保存用户首选项。我发现如果应用程序在写入NSUserDefaults的大约10秒内被杀死,它将不会被永久保存。我使用默认值来保存自定义铃声的路径,自定义图像的路径,地图坐标,以及基本上只是用户定义的首选项。使用核心数据是更好的选择吗? SQLite的?什么被认为是最快和最轻的?

1 个答案:

答案 0 :(得分:16)

您需要确保调用synchronize以立即保存数据。

[[NSUserDefaults standardUserDefaults] synchronize];

来自Apple的class reference

  

因为此方法会定期自动调用,   只有在您不能等待自动时才使用此方法   同步(例如,如果您的应用程序即将退出)或   如果要将用户默认值更新为磁盘上的内容,即使如此   你没有做任何改变。

要回答第二个问题,这实际上取决于您想要存储多少数据。 NSUserDefaults旨在存储非常少量的数据(用于首选项),例如切换开关的状态等。您可以在这里存储图像和铃声的路径,但这并不是完全可取的。我的意思是你可以,但可能不应该。

如果计划存储许多这些路径,核心数据是一种更好的方法,因为它具有很高的可扩展性并且运行良好。总的来说,如果你需要存储大量数据,用户核心数据,或者作为另一种选择,存储文档目录中plist中的路径。