次のコードを使用して辞書に値を書き込みましたが、辞書に新しい値を追加しても更新されない場合、最近追加された値のみを含むplistが表示され、クラッシュします。
nameString=nameTxt.text;
NSFileManager *mngr=[NSFileManager defaultManager];
NSArray *docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath=[docDir objectAtIndex:0];
NSString *filePath=[docPath stringByAppendingPathComponent:@"score.plist"];
NSString *bundlePath=[[NSBundle mainBundle] pathForResource:@"score" ofType:@"plist"];
if ([mngr fileExistsAtPath:filePath]) {
NSLog(@"File exists");
}
else {
NSLog(@"NO file exists");
[[NSFileManager defaultManager] copyItemAtPath:bundlePath toPath:filePath error:NULL];
}
dict=[[NSMutableDictionary alloc]init];
dict=[NSMutableDictionary dictionaryWithContentsOfFile:filePath];
NSLog(@"dict is %@",dict);
[dict setObject:nameString forKey:@"100"];
[dict writeToFile:filePath atomically:YES];
[dict release];
最後の行「[dictrelease]」を使用するとクラッシュします。バンドルにscore.plistファイルがあります。