我对此做了很多研究,但无法针对这个问题提出可行的解决方案。我在 Swift 和 SwiftUI/SwiftData/AppKit/UIKit 方面的知识和经验有限,所以我可能没有正确地看到问题并提出解决方案。
背景:
我正在尝试在 macOS/iOS 上制作一个通用应用程序来组织媒体(图像/视频/pdf);想象一下它的功能就像苹果的照片应用程序一样。因此,对于我的应用程序文档类型,我将拥有自定义文件包,并且在包文件夹中,将有一个 SwiftData 模型容器文件和文件夹来保存用户媒体。
采取的方法:
在我的应用程序场景中,我通过 DocumentGroup 创建文档(编辑:.customDocument,migrationPlan:CustomMigrationPlan.self)。这将使用我的 SwiftData 模型创建一个包含模型容器的文档。当我需要将媒体文件添加到文档中时,我获取文档的 URL,然后使用 FileManager 将文件写入文档中所需的文件夹中。结果是媒体文件保存在文件包中,但随后 SwiftData 容器被损坏(所有模型数据重置为空。)
我现在正在努力:
在我当前的方法中,我将通过 DocumentGroup(newDocument: CustomFileDocument()) 创建一个文档。我有自定义 FileDocument 和 FileWrapper。但问题是我不知道如何将 SwiftData 容器嵌入到我的 FileDocument 中。我的 FilerWrapper 初始化时是否可以创建 SwiftData 模型容器?我不知道该怎么做。
任何人都可以建议我应该如何实现这一目标吗?或者如果我错误地看待这个问题?我是否需要将 AppKit/UIKit 与 Core Data 一起使用,因为目前 SwiftUI/SwiftData 无法实现?
非常感谢您的阅读,非常感谢您的任何意见。