2011-01-13 42 views
4

在这里遇到NSUserDefaults有些麻烦。NSUserDefaults不能正常工作

下面是我如何创建它:

NSString *theCity = @"Test City"; 
[[NSUserDefaults standardUserDefaults] setObject:theCity forKey:@"SavedCity"]; 

以下是我正在努力找回它:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"]) 
    { 
     NSLog(@"Key exists! %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"]); 
    } 
    else { 
     NSLog(@"No city saved!"); 
    } 

我的问题是,即使是“一键SavedCity“(我检查Simulator目录中的pref文件),它总是显示”No city saved“。难道我做错了什么?

谢谢!

+0

这是否发生在一个香草应用?比如,这是否发生在您的应用以外的任何其他地方? – 2011-01-13 01:24:47

+0

@Dave没有这是这个应用程序之前发生过的唯一一次。 – 2011-01-13 01:41:25

+0

通过按住应用程序图标的鼠标并键入“quit”而不是使用xcode的停止按钮来终止应用程序。这样用户默认会正确保存到数据库。 – 2012-07-31 18:40:43

回答

10

你可以尝试两件事。

1)尝试在设置字符串后同步用户默认值。 [[NSUserDefaults standardUserDefaults] synchronize]

2)尝试检索使用-stringForKey:

0

你应该补充的是:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"SavedCity"] != nil) 

因为要检查,如果您保存的东西。

7

我遇到了类似的问题我自己最近的字符串。这是为我修复的。

iOS Application Programming Guide

建议你除了程序在启动时注册所有默认的值,包括他们在您的设置绑定属性列表。对于新安装的应用程序,在设置应用程序运行之前,应用程序设置包中的默认首选项值不会被设置。这意味着如果用户在运行设置前运行应用程序,则设置包中指定的默认值将不可用。在启动时以编程方式设置这些值可确保您的应用程序始终具有适当的值。要以编程方式注册默认值,请使用NSUserDefaults类的registerDefaults:方法。