2011-09-15 6 views
2

私は新しいiPhoneアプリケーションを開発していますが、NSUserDefaultsを使用してハイスコアを保存しロードしようとしています。 私の質問は、NSIntegerへのポインタであるhighscorespointer1という変数に保存したハイスコアを割り当てるためにどのコードを使うべきでしょうか? 私は現在、以下のコードを使用しています:NSUserDefaultsを使用してデータを保存し読み込む際に必要なヘルプ

ここで私はハイスコアを保存しています。

-(IBAction)saveData{ 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:highscore1 forKey:@"H1"]; 
    [defaults synchronize]; 
      } 

そして、ここで私はこの警告を取得highscore.Butをロードしています:「互換性のないポインタ型からの代入」:

highscorepointer1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"H1"]; 

答えて

1

setInteger:forKeyメソッドのセットを変数highscore1のタイプがNSIntegerであることに注意してくださいintint *ではなく、ポインタではなく値を設定します。 highscorepointer1int *ではなく、intであることを確認してください。ポインタを整数に保存するのは意味がありませんが、実際の整数そのものを保存してください。それが助けてくれることを願って!

+4

を使用し、 'objectForKey:'ではなく整数を取得するために 'integerForKey:'を使用します。分単位で、元のポスターはオブジェクトへのポインタをリテラルへのポインタに割り当てようとしています。 – Tommy

+0

ありがとう!私はあなたが言ったことをした、それは魅力のように働いた。私はもう一つ質問があります:私は前にポインタに保存されたデータを割り当てるとき、私はこのコード行を使用することができます: '' if(highscorepointer1 == nil){highscore1 = 0;} 'アプリが初めて実行されたとき。ロードされたデータを整数highscore1に直接割り当てることができるようになりました。 – CherryBrandy

+0

実際には、 'highscore1 = [[NSUserDefaults standardUserDefaults] integerForKey:@" H1 "];'を使用し、まだ設定されていない場合、 'highscore1'は' 0'になります。 – msgambel

関連する問題