standardUserDefaults读取问题

时间:2010-11-09 12:34:24

标签: iphone nsuserdefaults

我遇到类似于link text

的问题

我正在使用XCode 3.2.4(1708)。重新安装后,我开始从我的NSUserDefaults对象中获取Nil。

如果我在写:

 - (void)viewDidLoad {    
 NSUserDefaults *sUserDefaults = [NSUserDefaults standardUserDefaults];    
 NSString *myAdd = [standardUserDefaults objectForKey:kMyIPaddress];
 }

我在myAdd变量中得到Nil,但如果我喜欢这样:

- (void)viewDidLoad {    
 NSUserDefaults *sUserDefaults = [NSUserDefaults standardUserDefaults];
 [standardUserDefaults setObject:@"192.168.1.2" forKey:kMyIPaddress];
 NSString *myAdd = [standardUserDefaults objectForKey:kMyIPaddress];
 }

我在myAdd对象中得到192.168.1.2。因此看起来UserDefaults在我给它们添加内容之前保持空白,但它们存在于“常规首选项”中并包含正确的值。为什么我在放东西之前无法访问它们?

2 个答案:

答案 0 :(得分:1)

你做过

吗?
[[NSUserDefaults standardUserDefaults] synchronize];
将NSString放在那里之后

答案 1 :(得分:1)

您需要使用NSUserDefaults注册默认值。

NSDictionary *def = [NSDictionary dictionaryWithObjectsAndKeys:
                     @"192.168.1.2", kMyIPaddress,
                     nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:def];

每次应用启动时都需要这样做 Settings.app中有设置(我对General Preferences的解释)并不重要。如果这些值未手动更改,则它们不会存储在NSUserDefaults中。