2013-04-06 48 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 
} 
相關問題