如何将Core Data迁移到SwiftData并转移至App Groups共享容器?
Core Data转SwiftData并迁移至App Groups容器问题
- 已完成Core Data到SwiftData的数据结构演进迁移,现需将数据库迁移至App Groups容器,以支持Widget及后续iCloud同步
- 旧应用的Core Data文件存储在Application Support目录下的
Something.sqlite中 - 已在Xcode配置好App Group签名权限,但目前无法读取旧Core Data数据,也无法通过SwiftData完成迁移(含结构演进)并将数据转移至App Groups共享容器
- 苹果官方示例提到,拥有App Groups权限的应用会将数据存储在共享容器根目录,从无共享容器的版本升级时,SwiftData会自动复制现有存储至共享容器,但该自动方案对当前场景无效
当前使用的代码(指定自定义URL)
@main struct MyAppName: App { let container: ModelContainer let dataUrl = URL.applicationSupportDirectory.appending(path: "Something.sqlite") init() { let configuration = ModelConfiguration(url: dataUrl) do { // Create SwiftData container with migration and custom URL pointing to legacy Core Data file container = try ModelContainer( for: Foo.self, Bar.self, migrationPlan: MigrationPlan.self, configurations: configuration) } catch { fatalError("Failed to initialize model container.") } } var body: some Scene { WindowGroup { ContentView() } .modelContainer(container) } }
尝试过的带名称的ModelConfiguration代码
let fullSchema = Schema([Foo.self, Bar.self]) let configuration = ModelConfiguration("Something", schema: fullSchema)
该方式仅查找.store文件,无法复制Core Data内容
内容的提问来源于stack exchange,提问作者alexkaessner
相关产品推荐
相关产品推荐

