Xcode NSUserDefaultValues - 返回错误的值

时间:2011-06-12 14:45:29

标签: xcode nsuserdefaults

我有一个使用NSUserDefaults的奇怪案例。我在一个类中设置值并在另一个类中检索它们。

当我检索时,'nil'会返回到应用程序 - 这听起来很可疑。

有没有人碰到这个?解决方案是什么?

NSUserDefaults *appPreferences = [NSUserDefaults standardUserDefaults];

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:kFormattedDateStr];
NSLog(@"%@", [appPreferences dictionaryRepresentation]);
NSLog(@"startDateString =<%@>", [appPreferences stringForKey:kStartDateKey]);
NSLog(@"targetDateString=<%@>", [appPreferences stringForKey:kTargetDateKey]);
NSDate *targetDate = [df dateFromString:[appPreferences stringForKey:kTargetDateKey]];
[df release], df = nil;

我已经仔细检查过我正在保存检索具有相同密钥的值。可能是因为我将值保存为“objectForKey”并将其检索为“stringForKey”??

所以,我抛弃了NSUserDefaults - 它显示了我设置的值。我很困惑为什么代码会返回nil!

    WebKitWebArchiveDebugModeEnabledPreferenceKey = 0;
    WebKitWebGLEnabled = 0;
    WebKitWebSecurityEnabled = 1;
    WebKitXSSAuditorEnabled = 1;
    WebKitZoomsTextOnly = 1;
    notificationKey = 0;
    selectedGoalKey = "New Goal";
    startDateKey = "2011-06-12 15:00:51 +0000";
    targetDateKey = "2011-06-13 15:00:51 +0000";
}
2011-06-12 07:22:14.634 GoalBuggerPro[10304:207] startDateString =<(null)>
2011-06-12 07:22:20.886 GoalBuggerPro[10304:207] targetDateString=<(null)>

萨姆。

1 个答案:

答案 0 :(得分:1)

问题出在我的想法中.....

我将值存储为对象并将其作为字符串检索。

将代码更改为使用“objectForKey”后,可以访问正确的值。