如何在自定义文件包文档类型中嵌入SwiftData模型容器
跨平台媒体管理应用SwiftData与自定义文件包集成问题
我对此做了大量研究,但未能找到可行的解决方案。本人在Swift、SwiftUI/SwiftData/AppKit/UIKit方面的知识和经验有限,可能无法正确看待问题以得出解决方案。
背景
正尝试开发一款适配macOS/iOS的跨平台媒体(图片/视频/PDF)管理应用,功能类似苹果的Photos应用。应用文档类型为自定义文件包,包内包含SwiftData模型容器文件以及存放用户媒体的文件夹。
已尝试的方案
方案1:结合SwiftData模型使用DocumentGroup,直接写入文件包
在App场景中,通过DocumentGroup(editing: .customDocument, migrationPlan: CustomMigrationPlan.self)创建文档,生成带有SwiftData模型容器的文档。当需要向文档中添加媒体文件时,获取文档URL,使用FileManager将文件写入文档内的目标文件夹。结果是媒体文件已保存到文件包,但SwiftData容器损坏(所有模型数据被重置为空)。
方案2:结合自定义文件包使用DocumentGroup,尝试嵌入SwiftData容器
当前方案中,通过DocumentGroup(newDocument: CustomFileDocument())创建文档,拥有自定义的FileDocument和FileWrapper。但问题是不知道如何将SwiftData容器嵌入到FileDocument中,比如能否在FileWrapper初始化时创建SwiftData模型容器,目前无法解决这个问题。
求助
- 能否指导如何实现自定义文件包内同时包含SwiftData容器和媒体文件?
- 是否误解了问题方向?
- 是否需要结合AppKit/UIKit使用Core Data,因为目前SwiftUI/SwiftData无法实现该需求?
非常感谢您的阅读和任何建议。
内容的提问来源于stack exchange,提问作者Cakelly
相关产品推荐
相关产品推荐

