2012-03-29 10 views
1

ローカルでのみハイスコアを保存します。あなたの最高得点を保持する単一のintで、新しいスコアが作られたときにそれをテストすることができます。iOS:ハイスコアをローカルに保存する

plistの使用をお勧めしますか?以下のような

何か:

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"]; 
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain]; 

versionLabel = [[UILabel alloc] initWithFrame:CGRectMake(100,100,60,25)]; // for example 
versionLabel.backgroundColor = [UIColor clearColor]; 
versionLabel.textColor = [UIColor whiteColor]; 
versionLabel.font = [UIFont systemFontOfSize:10]; 
NSString *versionString = [NSString stringWithFormat:@"v%@", [plistData objectForKey:@"CFBundleVersion"]]; 
versionLabel.text = versionString; 
[self.view addSubview:versionLabel]; 

は、このデータは、アプリが開かれる次回利用できるようになりますか?

答えて

5

IMHOは、NSUserDefaultsを使うのが最も速くて簡単です。あなたはplistへの読み書きのスピードを得ますが、ただ一つの値のためにまったく新しいファイルを作ることに対処する必要はありません。高い得点を設定するコードは、次のようになります。

[[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"high_score"]; 

ブーム、それだけです。 (無効)gameEnded方法、または - - あなたは次おそらくで、アプリを起動し、そのハイスコアを確認したいときに、(無効)のviewDidLoad、あなただけlastHighScoreが今格納された値になります

NSInteger lastHighScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"high_score"]; 

言いますあなたが以前に保存したユーザーのデフォルトでsetInteger:forKey:を使用すると、キーがすでに存在する場合は前の値を上書きします。

+0

これはうまくいきますが、最終的にこれらのスコアをグローバルに(つまりゲームセンターやngmocoなどで)作成したい人には注意が必要です。「NSUserDefaults」はplistに過ぎません。自分の電話機を脱獄してこれらの値を変更して高得点にすることは、非常に自明です。 –

+0

これは知っておきたいことです。私はゲームセンターや刑務所の電話が壊れたplistsをハッキングしたことは一度もありません。洞察に感謝します! – jmstone617

+0

私は必要なものをくれました。 – Lohardt

関連する問題