2011-09-06 49 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”的方法是否被调用或不...把一些断点和查看结果