2011-09-06 46 views
0

我遇到NSUserDefaults的問題。我正在保存一個名稱,然後試圖從另一個視圖控制器的代碼中訪問它,但似乎我的密鑰是空的或沒有保存,因爲當我從密鑰中顯示字符串時,我的標籤爲空。從NSUserDefaults加載的問題,obj -c

-(void) saveName { 

    NSString *name = nameField.text; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:name forKey:@"playersName"]; 
    [defaults synchronize]; 
} 


-(void) viewDidLoad // method called later on in code from different viewcontroller 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *name = [defaults objectForKey:@"playersName"]; 
    playerName.text = name; // player name == myLabel 

    if ([[NSUsersDefaults standardUserDefaults] objectForKey:@"playersName"] == nil) { 
     playerName.text [email protected]" blank"; 
    }  
} 

我的弦似乎並沒有被保存到userdefaults爲@「空白」字符串不斷出現與我的標籤了。我不太熟悉NSUserDefaults,因此非常感謝任何幫助。

回答

0

有幾件事情用NSUserDefaults時的注意事項:

  1. 調用syncrhonize方法不necesary,只會讓它更慢,如果你的程序是多線程的。
  2. 檢查,如果你在項目中使用正被其他的庫
  3. 檢查,如果您設置到鍵的值不爲零
  4. 嘗試使用objectForKey:stringForKey:boolForKey:代替
關鍵

我用NSUserDefaults遇到過幾次麻煩,但最終通常是我的代碼有問題。

+0

乾杯恩里科路過一個零值插入鑰匙其被竊聽你可以忽略一些小事情! – Rhuntr

0

我建議你檢查你的「(無效)SAVENAME」的方法是否被調用或不...把一些斷點和查看結果