0

コードでNSDictionaryのwriteToFileプロパティを使用しています。辞書を次のようにドキュメントディレクトリに更新しようとしています。

NSDictionary *revisionDict = [NSDictionary dictionaryWithObject:currentItem.rev forKey:destPath];
NSArray *documentDirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentDirPath objectAtIndex:0];
NSString *dictPath = [documentsDir stringByAppendingPathComponent:@"Revision.dictionary"];
[revisionDict writeToFile:dictPath atomically:YES];

ここで問題となるのは、反復ごとに新しいエントリによって更新されるのではなく、新しいエントリによって上書きされる辞書です。辞書を更新するにはどうすればよいですか?writeToFileの代替手段はありますか?事前に助けていただければ幸いです。

4

2 に答える 2

8

メモリ内の辞書は変更可能です。ディスクに書き込まれる辞書は、情報の完全なセットのスナップショットです。

このようなフレームワークメソッドから「更新のマージ」動作を取得することはありません。追加または更新する既存のバージョンがある場合は、元のバージョンを変更可能な辞書としてメモリにロード/保持し、それに変更または追加を行ってから、まったく新しいものを保存する必要があります。 (-writeToFile:または何か他のものと)。

ループ内に多数のエントリを追加する場合は、最初にすべてのエントリを追加し、完了したら辞書をファイルとしてディスクに書き込みます。

于 2012-09-14T07:40:05.370 に答える
4

はいwriteToFileは以前のコンテンツを上書きします。

したがって、ファイルの以前のコンテンツを読み取ってNSMutableDictionaryから、この mutableDictionary に新しいコンテンツを追加し、この mutableDictionary (古いコンテンツと新しいコンテンツの両方を保持する) をファイル パスに書き込むことができます。

于 2012-09-14T07:46:28.773 に答える