0

完成した最高レベルを示すインデックス 0 の数値オブジェクトを含む playerData という plist ファイルがあります。ビューを読み込んだ後、ゲーム ロジック全体で使用されるこのオブジェクトの整数値を読み取りました。プレーヤーがゲームに勝った場合、この番号をインクリメントして plist ファイルに書き込みたいと思います。これが私が持っているコードです(ifステートメントに含まれています)

levelNumber++;
NSNumber *levelNSNum = [[NSNumber alloc] initWithInteger:levelNumber];
[playerData replaceObjectAtIndex:0 withObject:levelNSNum];
[playerData writeToFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"PlayerData.plist"] atomically:YES];
NSLog(@"%i should be written to file", levelNumber);

ログが機能するので、if ステートメントの条件が満たされ、値が以前に plist ファイルにあった値と同じではないことがわかりますが、何らかの理由でこのデータがそのデータに上書きされていません。

私はこれに比較的慣れていないので、簡単で愚かな間違いを犯している可能性があります。答えを追跡できないようです。ご協力ありがとうございました!

4

1 に答える 1

1

アプリのインストール後に読み取り専用になるバンドルに書き込もうとしています。代わりに、ディレクトリなど、アプリのサンドボックス内のどこかに書き込む必要がありますLibrary/Application Support。( - [NSFileManager URLsForDirectory:inDomains:]NSApplicationSupportDirectory を使用してこのパスを見つけることができます。書き込みを試みる前に、必ずディレクトリを作成してください。)

于 2012-06-30T14:56:48.603 に答える