Я пытаюсь сохранить plist и несколько двоичных файлов (скажем, изображений) как часть UIManagedDocument.Имя двоичных файлов является атрибутом в Базовых данных, и мне не нужно перечислять их, просто обращайтесь к нужному при отображении связанной сущности.
Структура файла, которую я хочу иметь:
- <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: ошибка :) как NSFileWrapper? Есть ли какие-либо преимущества / недостатки по сравнению с использованием только URL?Я считаю более сложным использование обертки файлов, так как plist должен быть прочитан с использованием средств доступа к оберткам файлов и NSCoder (я полагаю), а также файлов, я должен сохранить оболочку файлов для каталога Images и затем получить соответствующийузел с objectForKey (я предполагаю).Но в Руководстве Apple по программированию на основе документов для iOS, касающемся пользовательских форматов вместо NSData или NSFileWrapper, говорится: " Имейте в виду, что ваш код должен будет дублировать то, что делает для вас UIDocument, и поэтому вам придется иметь дело с большей сложностью ибольшая вероятность ошибки."Не понимаю ли я это?
- По умолчанию для каждого документа объявляются свойства: установщик изменяет NSDictionary, который отображает plist и помечает документ как обновленный, а получатель обращается к словарюс правильным ключом.Как мне предоставить возможность чтения / записи двоичных файлов? Должен ли я добавить метод в мой подкласс UIManagedDocument?- (void) writeImage: (NSString *) uuid;и - (UIImage *) readImage: (NSString *) uuid;И я должен хранить эти данные в памяти, пока документ не будет сохранен?Как?
- Предполагая, что NSFileWrapper - это путь, если я планирую использовать этот документ с iCloud , следует ли мне использовать координаторы файлов с оболочкой файлов?Если да, то как?
Любой исходный код для каждого вопроса будет с благодарностью.Спасибо.
PS: Я знаю, что могу сохранить некоторые двоичные данные внутри Core Data, но мне не нравится это решение.Среди прочих причин я предпочитаю хранить данные PNG для файлов изображений, которые представляют собой сериализованную версию UIImage, которая не будет совместима с NSImage, если я хочу создать настольное приложение.