2

例: これを使用した場合、iPhone はファイルをどこに保存しますか?

if (![NSKeyedArchiver archiveRootObject:your_object toFile:@"filename.plist"])
   // save failed.

私の Mac では、filename.plist は直接 Macintosh HD に送られます。フォルダがありません。また、NSKeyedArchiver はパスを要求するのではなく、ファイル名だけを要求するようです。奇妙かどうか?

そして、そのファイルはどのように iTunes でバックアップされますか?

4

3 に答える 3

5

それは実際には、ファイルを保存する場所に依存します。あなたの場合はfilename.plist、 root に保存されるstore を指示しています/

特定の場所に保存したい場合は、Diederik Hoogenboomがあなたに言ったように、フルパスを指定してください(これにより、ドキュメントディレクトリに保存されます)

または、ファイルを保存する絶対パスを指定します。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent: @"myFile.plist"];
[NSKeyedArchiver archiveRootObject:your_object toFile:filePath];

これで少しはすっきりしたはずです。

于 2012-01-21T20:55:23.403 に答える
1

archiveRootObject:toFile :(非推奨になりました)。したがって、ファイル名だけでなくパスを渡す必要があります。それ以外NSKeyedArchiverは、デバイスのハードディスクのルートに保存することを想定しています。


アップデート:

で生成されたデータ結果で、指定されたURLで指定された場所にデータオブジェクトのバイトを書き込むインスタンスメソッドをNSKeyedArchiver使用します。Data.write(to:options:)

于 2010-03-16T10:54:14.637 に答える
1

ファイルを保存する適切な場所は、次のドキュメント フォルダーです。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
于 2010-03-16T10:50:10.803 に答える