Я пытаюсь сохранить список и несколько двоичных файлов (скажем, изображений) как часть UIManagedDocument. Имя двоичных файлов является атрибутом в Core Data, и мне не нужно их перечислять, просто перейдите к нужному файлу при отображении связанной сущности.
Я хочу иметь следующую файловую структуру:
- <File yyyyMMdd-HHmmss>.extdoc
- StoreContent
- persistentStore
- AdditionalContent
- ListStatus.plist (used to store per document defaults)
- Images
- uuid1.png
- uuid2.png
- ...
- uuidn.png
Пока что я успешно выполнил инструкции в Как мне сохранить дополнительный контент в пакеты файлов UIManagedDocument?, но когда я пытаюсь добавить двоичные файлы, есть некоторые вещи, которые я не знаю, как сделать.
- Следует ли рассматривать URL / путь / файл yyyyMMdd-HHmmss.extdoc / AdditionalContent (тот, который по умолчанию предоставляется с readAdditionalContentFromURL: error :) как NSFileWrapper? Есть ли какие-либо преимущества / недостатки по сравнению с использованием только URL-адресов? Я считаю более сложным использовать файловую оболочку, так как plist должен быть прочитан с использованием средств доступа к файловой оболочке и NSCoder (я думаю), а файлы, я должен сохранить файловую оболочку для каталога изображений, а затем получить соответствующий узел с objectForKey (я полагаю). Но в Руководстве по программированию приложений на основе документов Apple для iOS, касающемся пользовательских форматов вместо NSData или NSFileWrapper, говорится: «Имейте в виду, что ваш код должен будет дублировать то, что UIDocument делает для вас, и поэтому вам придется иметь дело с большей сложностью и большая вероятность ошибки. «Я неправильно понимаю это?
- Значения по умолчанию для каждого документа объявляются как свойства: установщик изменяет NSDictionary, который отображает список и помечает документ как обновленный, а средство получения обращается к словарю с правильным ключом. Как мне предоставить возможность чтения / записи двоичных файлов? Следует ли мне добавить метод в свой подкласс UIManagedDocument? - (void) writeImage: (NSString *) uuid; и - (UIImage *) readImage: (NSString *) uuid; И следует ли мне хранить эти данные в памяти, пока документ не будет сохранен? Как?
- Предполагая, что NSFileWrapper - это то, что вам нужно, если я планирую использовать этот документ с iCloud, следует ли мне использовать файловые координаторы с файловой оболочкой? Если да, то как?
Мы будем очень признательны за любой исходный код для каждого вопроса. Спасибо.
P.S .: Я знаю, что могу сохранить некоторые двоичные данные внутри Core Data, но мне не нравится это решение. Среди других причин я предпочитаю хранить данные PNG для файлов изображений, сериализованную версию UIImage, которая не будет совместима с NSImage, если я хочу создать настольное приложение.