私のゲームでは、プレイヤーの統計をドキュメント ディレクトリに保存する plist に保存しています。「Default_Stats.plist」という名前で保存する必要がある各統計の空の辞書があるため、アプリが初めて読み込まれる場合は、それを適切なディレクトリにコピーして、自由に読み込んで上書きできるようにします。問題は、アプリがロードされるたびに、「Stats.plist」を認識せず、デフォルトの統計で上書きし、プレーヤーが作成したすべての統計をリセットすることです...そして、奇妙なことに、それは完全に機能していましたシミュレーターですが、デバイス上ではありません。これが私のコードです:
このメソッドでは、統計を読み取ります。
- (void) readStatsFromFile{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *statsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Stats.plist"];
//Check if the file has already been created
if (![[NSFileManager defaultManager] fileExistsAtPath:statsPath]){
[self createStatsList];
}else{
stats = [[NSMutableDictionary dictionaryWithContentsOfFile:statsPath]retain];
}
}
これが私の作成方法です:
- (void) createStatsList{
NSString *statsPath = [[NSBundle mainBundle] bundlePath];
statsPath = [statsPath stringByAppendingPathComponent:@"Default_Stats.plist"];
stats = [[NSMutableDictionary dictionaryWithContentsOfFile:statsPath] retain];
[self writeStatsToFile];
}
そして私の書き方:
- (void) writeStatsToFile{
BOOL ok;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *statsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Stats.plist"];
ok = [stats writeToFile:statsPath atomically:YES];
if (!ok) {
NSLog(@"Couldn't write to file");
}else
NSLog(@"Stats written succesfully!");
}
助けてください、何が悪いのか本当にわかりません!私は自分自身を十分に明確にしたことを願っています!