我遇到了一些令人费解的事情。我有一些基本的字符串数据,我正试图保存到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?中提到的解决方案,当应用程序进入后台时强制另一个同步,但我想知道是否有人对此事有更深入的了解。
答案 0 :(得分:0)
我在这里猜测一些数据类型问题。 你可以试试这个吗,看看你能得到什么吗?
NSString *savedState = [[NSUserDefaults standardUserDefaults] objectForKey:@"downloadFinished"]
注意 objectForKey 用法