Можно ли использовать Core Data в приложении на основе документов?

Я работаю над приложением для iOS, которому нужно будет сохранять данные в файлы. Я выбрал приложение на основе документов, а именно приложение, основанное на UIDocumentBrowserViewController, чтобы я мог легко сохранять и загружать файлы из системного приложения "Файлы".

Поскольку данные, которые мне нужно сохранить/загрузить в файл, довольно сложны: большая иерархия различных объектов с метаданными, файлами изображений и т. д. Мне интересно, какую технологию лучше всего использовать в будущем. Я наткнулся на NSFileWrapperи его способность сохранять разные файлы как один. И я определенно мог бы использовать это. Но я также увидел UIManagedDocument и возможность использовать Core Data в своем проекте, возможно, сохраняя содержимое базы данных Core Data (я знаю, что это не совсем база данных, но вы понимаете, о чем я) в файл, который я мог бы записать куда-нибудь в Файловое приложение.

Могу ли я ожидать такого поведения?

Переформулирую: мне интересно, могу ли я читать/записывать файлы через UIDocumentBrowserViewController с данными, описанными UIManagedDocument, которые работают с Core Data.

Заранее спасибо. ????


person Pomme2Poule    schedule 03.04.2019    source источник
comment
Это немного широкий вопрос. UIManagedDocument уже использует coredata самостоятельно, и поскольку они являются UIDocuments, к ним можно получить доступ через UIDocumentBrowserViewController...   -  person MartinM    schedule 03.04.2019


Ответы (1)


Как вы уже поняли, UIManagedDocument предназначен для вашего типа приложений. И в нем есть методы для записи и прочитайте дополнительный контент, такой как метаданные или файлы изображений, которые у вас есть, в пакет документов.

При этом я никогда не использовал UIManagedDocument и никогда не видел, чтобы его использовали другие. Быстрый поиск на GitHub находит только этот один проект с двумя участниками, которые написали для него оболочку в 2013 году. Кроме того, похоже, что нет никакого примера кода от Apple, и примечание в writeAdditionalContent(_:to:originalContentsURL:) документация о том, что дополнительный контент не поддерживается в iCloud, меня немного беспокоит, но, возможно, это хороший знак того, что команда Core Data знает, где провести линию.

Я использовал аналог UIManagedDocument для macOS, NSPersistentDocument. Он находится в аналогичной ситуации, когда используется не очень часто, но имеет много других известных технических проблем. Поэтому несколько лет назад я перешел на BSManagedDocument, который якобы имитирует UIManagedDocument для поддержки Core Data. во всей своей современной красе. Я был доволен BSManagedDocument.

Таким образом, если бы я был в вашей ситуации, да, я бы попробовал UIManagedDocument. Но не удивляйтесь, если во время вашего разработка.

person Jerry Krinock    schedule 03.04.2019
comment
Большое спасибо! Да, это похоже на пионера технологии полувековой давности. Но я рад видеть, что это может быть осуществимо. В настоящее время я изучаю Core Data и попытаюсь использовать его с UIManagedDocument в небольшом проекте. Я думаю, что это может работать, мы увидим! - person Pomme2Poule; 04.04.2019