2010-11-09 139 views
1

我有类似link textstandardUserDefaults阅读问题

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

如果我写:

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

我myAdd变量获得零,但如果我做这样的:

- (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在我给它们放置东西之前保持空白,但它们存在于常规首选项中并且包含适当的值。为什么在我放置东西之前无法访问它们?

回答

1

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

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

而且每次启动应用程序时都需要这样做。
Settings.app中有设置无关紧要(我对您的General Preferences的解释)。如果这些值不会手动更改,它们不会存储在NSUserDefaults中。

+0

但是,如果我在ViewDidLoad中注册了默认值 - 每次启动应用程序时默认值都会被* def覆盖,对吧? – MoriQuessir 2010-11-12 07:43:48

+0

看起来它不会覆盖设置,但只是初始化它们 - 那是我需要的!非常感谢你! – MoriQuessir 2010-11-12 14:46:59

1

你做一个

[[NSUserDefaults standardUserDefaults] synchronize]; 

把你的NSString有后?

+0

看起来它现在与“同步”一起工作。谢谢! – MoriQuessir 2010-11-10 07:11:42