Я провел много исследований по этому вопросу, но не смог найти действенного решения этой проблемы. Мои знания и опыт работы с Swift и SwiftUI/SwiftData/AppKit/UIKit ограничены, поэтому я, вероятно, неправильно вижу проблему, чтобы найти решение.
Справочная информация:Я пытаюсь создать универсальное приложение для macOS/iOS, которое упорядочивает медиафайлы (изображения/видео/pdf); думайте о его функциональности как о приложении Apple Photos. Таким образом, для моего типа документа приложения у меня будет собственный пакет файлов, а в папке пакета будут файл и папки-контейнер модели SwiftData для хранения пользовательских медиафайлов.
Принятые подходы:< /p>
- DocumentGroup с моделью SwiftData, затем записывайте непосредственно в пакет файлов
В моем приложении сцене я создаю документ, имея DocumentGroup (редактирование: .customDocument,migrationPlan: CustomMigrationPlan.self). Это создаст документ с контейнером модели с моей моделью SwiftData. И когда мне нужно добавить медиафайлы в документ, я получаю URL-адрес документа, а затем использую FileManager, чтобы записать файл в нужную папку документа. В результате медиафайл сохраняется в пакете файлов, но контейнер SwiftData повреждается (все данные модели становятся пустыми).
Сейчас я пытаюсь:
- DocumentGroup с пользовательским пакетом файлов, затем попробуйте встроить контейнер SwiftData
В моем нынешнем подходе я бы создал документ, используя DocumentGroup(newDocument: CustomFileDocument()). У меня есть собственные FileDocument и FileWrapper. Но проблема в том, что я не знаю, как встроить контейнер SwiftData в свой FileDocument. Можно ли создать контейнер модели SwiftData при инициализации моего FilerWrapper? Я не могу понять, как это сделать.
Кто-нибудь может посоветовать, как мне это сделать? Или, может быть, я неправильно смотрю на эту проблему? Нужно ли мне использовать AppKit/UIKit с Core Data, поскольку в настоящее время это невозможно с помощью SwiftUI/SwiftData?
Большое спасибо за чтение, мы будем очень признательны за любой вклад.
Подробнее здесь:
https://stackoverflow.com/questions/786 ... ument-type