2010-03-16 1 views
2

Пример: Если я использовал это, где iPhone хранит файл?Когда вы сохраняете что-то на диск с NSKeyedArchiver, где это хранится на iPhone?

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

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

И как этот файл поддерживается iTunes?

ответ

1

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

1

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

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

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

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

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

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

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