2009-07-12 3 views
4

私はNSuserdefaultsに特定のものを保存する方法に関するチュートリアルを探していますが、主に配列や文字列を扱うものしか見つけられていません。誰かが私に連れて行ったり、intを保存して読み込んだりする人に知ってもらうことができます。私のアプリケーションでは、私は自分のint highScore = 0を持っています。私はそれがあなたのNSuserdefaultsにこのintを保存したいので、私のゲームがバックアップしたときに、あなたが最近達成した現在のハイスコアを表示します。NSdefaultsに単一のintを保存する

答えて

2

NSNumberとして保存します(-[NSNumber numberWithInt:highScore]を使用)。

+0

ありがとうございました。試してみる。 –

12
int highScore = 0; 

// write 
[[NSUserDefaults standardUserDefaults] setInteger:highScore forKey:@"someKey"]; 

// read 
highScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"someKey"]; 
+0

どこに私のコードに書込みと読込みを入れるべきですか?スーパービューがロードされたときに呼び出されるべきか、ハイスコアをサブミットするときに呼び出されるべきか?私はそれを試して、エラーにはなりませんでしたが、データを保存しませんでした。 –

+0

ハイスコアを送信し、ユーザーにハイスコアを表示する読み込み時に読み込みます(-viewDidLoadまたは-viewWillAppear)。 –

+0

うーん、それはすべての場所を持っているが、まだ保存していない:/ hmm ... –

0

NSUserDefaultsは唯一のプロパティリストオブジェクトを処理することができます。プロパティリストオブジェクトは、次のいずれかのタイプでなければなりませんにNSArrayNSDictionaryのNSStringののNSDataNSDataののNSNumber

NSUserDefaultsは自動的するNSNumberオブジェクトにしてから、Cの数値型を変換するヘルパーメソッドの数を持っています。 setInteger:forKey:およびintegerForKey:および整数のヘルパーメソッド。これらのメソッドは、整数がタイプNSIntegerであることを期待しています。 NSIntegerはオブジェクトではありません。 long intの単なるtypedefです。あなたのコードでは、highScoreをintと定義しています。これは問題の原因となる可能性があります。

私は、数値型をNSNumberオブジェクトに変換してオブジェクトを保存することをお勧めします。これは余分な作業のようですが、NSUerDefaultsによって返されるすべてのオブジェクトは一意の方法で処理されるため、コードを単純化できます。

関連する問題