При сохранении чего-либо на диск с помощью NSKeyedArchiver, где это сохраняется на iPhone?
-
20-09-2019 - |
Вопрос
Пример:Если я использовал это, где iPhone хранит файл?
if (![NSKeyedArchiver archiveRootObject:your_object toFile:@"filename.plist"])
// save failed.
На моем Mac filename.plist напрямую передается в Macintosh HD.Папки нет.Кроме того, NSKeyedArchiver, похоже, не запрашивает путь, только имя файла.Странно или нет?
И как создается резервная копия этого файла в iTunes?
Решение
Архивируемый объект:toFile:
Поэтому вы должны передать ему путь, а не просто имя файла.В противном случае NSKeyedArchiver
предположим, вы хотите сохранить его в корневом каталоге жесткого диска устройства.
Чтобы убедиться, что iTunes создает резервные копии, вам нужно сохранить ваши данные в папке documents, как вам уже показывал Дидерик Хугенбум.Взгляните на это проводник.
Другие советы
Ну, это на самом деле зависит от того, где вы просите его сохранить файл, в вашем случае вы указываете
ему сохранить filename.plist
, который будет сохранен в вашем корневом каталоге /
.
если вы хотите сохранить его в определенном месте, просто укажите к нему полный путь, что-то вроде того, что сказал вам Дидерик Хугенбум (это сохранит его в каталоге Documents)
Или просто укажите ему абсолютный путь, по которому вы хотите сохранить файл.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent: @"myFile.plist"];
[NSKeyedArchiver archiveRootObject:your_object toFile:filePath];
Вероятно, это должно было немного прояснить ситуацию для вас.
Подходящим местом для хранения файлов является папка documents:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];