NSUserDefaults并不总是保存我的NSString数据

时间:2012-01-27 00:51:32

标签: iphone objective-c nsuserdefaults

我遇到了一些令人费解的事情。我有一些基本的字符串数据,我正试图保存到NSUserDefaults,如下所示:

NSString *state = @"finished";
[[NSUserDefaults standardUserDefaults] setObject:state forKey:@"downloadFinished"];
[[NSUserDefaults standardUserDefaults] synchronize];

当应用启动时,决定加载哪个视图的方法之一是检查此用户设置的值:

NSString *savedState = [[NSUserDefaults standardUserDefaults] stringForKey:@"downloadFinished"]
if(savedState && [savedState length]) {
  // Show view
}

每隔一段时间,我就注意到这个值无法加载,即使我确定此值已经保存过(或者至少,应用程序试图先保存它)。当发生这种情况时,当我从用户默认值中查找“downloadFinished”键时,我得到的值为零。

有没有人遇到过这个?有没有任何关于为什么会发生这种情况的知识?保存到用户的默认缓存和默认数据库失败的可能性有多大,反正是为了进一步防止这种情况发生?

我将尝试Why is NSUserDefaults not saving my values?中提到的解决方案,当应用程序进入后台时强制另一个同步,但我想知道是否有人对此事有更深入的了解。

1 个答案:

答案 0 :(得分:0)

我在这里猜测一些数据类型问题。 你可以试试这个吗,看看你能得到什么吗?

NSString *savedState = [[NSUserDefaults standardUserDefaults] objectForKey:@"downloadFinished"]

注意 objectForKey 用法