2013-04-06 78 views
0

我在Xcode中制作了一款游戏,每款游戏都包含一个评分系统。在这里我有一些代码通过使用委托获取NSString(passedValue1)。如何添加到已保存的NSUserDefault?

然后,我在一个UILabel

-(void)viewDidLoad 
    { 


     [super viewDidLoad]; 
     // Do any additional setup after loading the view, typically from a nib 

     // Do any additional setup after loading the view, typically from a nib 
     NSString *[email protected]"labelKey"; 

     if(passedValue1){ 
      NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

      NSObject * object = [prefs valueForKey:key]; 
      if(object != nil){ 
       NSUserDefaults *defults = [NSUserDefaults standardUserDefaults]; 
       [defults setValue:passedValue1 forKey:key]; 
       [defults synchronize]; 
      } 
      else{ 
       NSUserDefaults *defults = [NSUserDefaults standardUserDefaults]; 

       NSInteger readScore=[[[NSUserDefaults standardUserDefaults] valueForKey:key] integerValue]; 
       NSInteger newValue=readScore+[passedValue1 integerValue]; 
       [defults setValue:[NSString stringWithFormat:@"%d",newValue] forKey:key]; 
       [defults synchronize]; 

      } 
     } 
     label.text = [[NSUserDefaults standardUserDefaults]objectForKey:key]; 
    } 

添加代码来接受我的viewDidLoad中的值,并显示我的价值,我一旦显示的值然后我把它保存到使用NSUserDefault的标签。但是,一旦我有重播我的比赛,还有一个分值,我想新的passedValue1值添加到当前保存值...

例如: 说,我玩我的水平,我得到的分数价值10,然后保存价值,我重新玩我的水平。然后,我想把保存的价值加到我刚刚得分的价值上。所以这就是说我得分的第二个值是20.我然后会喜欢我的代码将它们加在一起,并给我一个值30. 任何人都可以帮助,因为我使用的代码不正确地执行我想要的功能要做的是添加上一个和当前传递的值。

我的代码有什么问题?

在此先感谢。

+0

如果上述方案执行那么你越来越老呀值或新值,或者别的什么吗? – Balu 2013-04-06 10:44:33

+0

一旦检查到天气情况满足或不在你的观点的断点。 – Balu 2013-04-06 10:54:00

回答

3

您不应该为此使用valueForKey:(您可能认为它不是这样,请参阅键值编码)。相反,您应该使用objectForKey:或在您的情况下使用integerForKey:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSInteger value = [defaults integerForKey:key]; 
value += [passedValue1 integerValue]; 
[defaults setInteger:value forKey:key]; 
BOOL success = [defaults synchronize]; 
+0

(+1)这是非常简单的代码,并且还可以解决错误的'if'条件的问题,因为'integerForKey'默认为零。 – 2013-04-06 10:55:46

1

看来,你有你的if条件错了,应该是

if (object == nil) { // <-- you have object != nil here ! 
    // save new value 
} else { 
    // read old value, add something, save new value 
} 
相关问题