NSUserDefaults的同步方法何时以及为何失败?

时间:2009-10-07 10:53:45

标签: iphone nsuserdefaults synchronize

NSUserDefaults'同步方法何时以及为何失败?确保我的值实际写入并提交给NSUserDefaults的最佳方法是什么,所以在应用程序重启后恢复状态不会有任何问题?

3 个答案:

答案 0 :(得分:5)

synchronize方法是围绕CFPreferencesSynchronize函数的更高级API包装器。文档中没有任何内容,但我认为synchronize只返回CFPreferencesSynchronize的结果。由于此CoreFoundation函数可用于同步主机(管理员)和基于网络的首选项,因此在某些情况下可能会失败。

在最常见的情况下,应用程序只是同步其用户域首选项(在当前用户的Library目录中),该功能通常不会失败。我认为忽略synchronize的返回值是安全的。但那只是我的意见。

答案 1 :(得分:0)

在某些情况下,我的应用尝试使用某个键写入nil值,这导致同步失败。现在我在保存之前检查nil的值,问题是固定的。

答案 2 :(得分:0)

在我的情况下,我错误地使用NSUserDefaults,它将失败。   例如,我定义自己的对象,并将其放入NSUserDefaults或NSDictionary,它可以放,但它会在同步时失败。因为NSUserDefaults不支持所有类型的对象。  据我所知,NSString,NSNumber,NSDictionary ....你可以谷歌它如何使自定义类可以存储在NSUserDefaults。