0

このコードの後、私の plist ファイルには何も書き込まれません。コードの何が問題になっていますか?

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"aFile.plist"];
NSMutableDictionary *reqData = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
/*
some modifications to "reqData"
*/
[reqData writeToFile:finalPath atomically:YES];

ファイルには何も書かれていません。何が問題なのですか?

4

4 に答える 4

2

Document フォルダに書き込みます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask,
                                                     YES);
NSString *path = [paths objectAtIndex:0];

アップデート

NSDictionary Class Referenceによると:

このメソッドは、ファイルを書き出す前に、含まれているすべてのオブジェクトがプロパティ リスト オブジェクト (NSData、NSDate、NSNumber、NSString、NSArray、または NSDictionary のインスタンス) であることを再帰的に検証し、すべてのオブジェクトがプロパティ リスト オブジェクトでない場合は NO を返します。結果のファイルは、有効なプロパティ リストではありません。

ディクショナリ全体に、これらの有効なもの以外のタイプのオブジェクトはありますか?

于 2012-04-27T09:05:00.843 に答える
1

ファイルをアプリ バンドルに書き戻そうとしています。

それがエラーの原因である可能性が最も高いものです。

別の場所 (デスクトップ フォルダなど) に書き込もうとするとどうなりますか?

于 2012-04-27T08:56:29.580 に答える
0

アプリケーションに plist を含める場合は、アプリの最初の起動時にそのファイルをドキュメントに直接コピーする必要があります (まだコピーされていない場合)。次に、plist で実行する読み取りおよび書き込み操作は、アプリ バンドルのバージョンではなく、Documents ディレクトリのコピーから実行する必要があります。

于 2012-04-27T16:21:58.303 に答える
0

最初に覚えておくべきこと:

リソースから plist ファイルを読み取ることはできますが、変更することはできません。

変更したい場合は、

  1. そのファイルを Documents ディレクトリにコピーします
  2. plist の内容をその型に応じて配列または辞書にコピーします
  3. 必要な変更を加えます
  4. 最後に....ドキュメントディレクトリに保存します

それはトリックを行います

于 2012-04-27T16:49:37.413 に答える