如何将现有的 SwiftData 迁移到 App Group

问题描述 投票:0回答:1

我有一个使用 SwiftData 的现有应用程序,现在需要添加需要访问此数据的扩展。

我尝试使用应用程序组,它将共享数据,但这意味着现有安装的数据将不再可用。

有什么方法可以在保留(或至少以某种方式迁移)现有数据的同时使其仍然可用吗?

swift xcode swiftui swiftdata appgroups
1个回答
0
投票

我也遇到了同样的问题,解决方法如下: 首先,找到老店:

guard let legacyStoreURL = FileManager.default
    .urls(for: .applicationSupportDirectory, in: .userDomainMask)
    .first?
    .appendingPathComponent(databaseFileName) else {
    return
}

数据库名称通常是

default.store

接下来,使用旧商店的位置配置创建一个模型容器:

let legacyConfig = ModelConfiguration(url: legacyStoreURL)
let legacyContainer = try ModelContainer(for: dataSchema, configurations: [legacyConfig])

之后,应该就很简单了。您可以使用任何逻辑从新的 (appGroup) 存储(如果有)获取数据。然后,只需将旧存储中的数据插入到新存储中即可。

最后,如果您不再需要旧商店,可以将其删除:

FileManager.default.removeItem(at: legacyStoreURL

© www.soinside.com 2019 - 2024. All rights reserved.