При сохранении чего-либо на диск с помощью NSKeyedArchiver, где это хранится на iPhone? - PullRequest
2 голосов
/ 16 марта 2010

Пример: если я использовал это, где iPhone хранит файл?

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

На моем Mac файл filename.plist напрямую переходит в Macintosh HD. Нет папки. Кроме того, NSKeyedArchiver, кажется, не запрашивает путь, только для имени файла. Странно или нет?

А как этот файл копируется в iTunes?

Ответы [ 3 ]

4 голосов
/ 22 января 2012

Ну, это на самом деле зависит от того, где вы просите сохранить файл, в вашем случае, вы говорите это хранить filename.plist, который будет храниться в вашем корне /.

если вы хотите сохранить его в определенном месте, просто укажите ему полный путь, что-то вроде того, что сказал вам Дидерик Хугенбом (это сохранит его в директории документов)

ИЛИ просто укажите абсолютный путь, в который вы хотите сохранить файл.

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

Вероятно, это должно было немного прояснить для вас.

1 голос
/ 16 марта 2010

archiveRootObject: toFile:
Таким образом, вы должны передать ему путь, а не просто имя файла. В противном случае NSKeyedArchiver будет предполагать, что вы хотите сохранить его в корне жесткого диска устройства.
Чтобы обеспечить резервное копирование iTunes, вам нужно сохранить данные в папке с документами, как это уже показал Diederik Hoogenboom. Взгляните на это руководство.

1 голос
/ 16 марта 2010

Правильным местом для хранения файлов является папка документов:

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