2010-11-09 176 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