如何将 Realm DB 迁移到 Swift 中的共享(AppGroup)Realm DB?
How to migrate Realm DB to shared(AppGroup) Realm DB in Swift?
所以我有一个 iOS 应用程序使用 Realm 数据库,我一直在用 SiriKit 实现新的东西,所以现在我使用的应用程序组对 NSUserDefault 运行良好。
但现在如何将默认位置的 Realm 数据库迁移到共享文件夹,以便 Siri 扩展程序可以访问这些值?
这是我要用来读取扩展中领域的代码
let fileURL = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: "group.com.x")!
.appendingPathComponent("default.realm")
let config = Realm.Configuration(
fileURL: fileURL,
objectTypes: [x1.self, x2.self, EquipmentConsumptionDay.self])
_ = try! Realm(configuration: config)
解决方法很简单,只需将领域文件复制到新位置即可。
// Migrate now the DATABASE realm
// Copy the file from the default location to the new real location
let fileManager = FileManager.default
let originalPath = Realm.Configuration.defaultConfiguration.fileURL!
let appGroupURL = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: "group.com.xx.siri")!
.appendingPathComponent("default.realm")
do{
try _ = fileManager.replaceItemAt(appGroupURL, withItemAt: originalPath)
}
catch{
print("Error info: \(error)")
}
不要忘记为迁移制作系统,所以这段代码只需 运行 一次
所以我有一个 iOS 应用程序使用 Realm 数据库,我一直在用 SiriKit 实现新的东西,所以现在我使用的应用程序组对 NSUserDefault 运行良好。
但现在如何将默认位置的 Realm 数据库迁移到共享文件夹,以便 Siri 扩展程序可以访问这些值?
这是我要用来读取扩展中领域的代码
let fileURL = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: "group.com.x")!
.appendingPathComponent("default.realm")
let config = Realm.Configuration(
fileURL: fileURL,
objectTypes: [x1.self, x2.self, EquipmentConsumptionDay.self])
_ = try! Realm(configuration: config)
解决方法很简单,只需将领域文件复制到新位置即可。
// Migrate now the DATABASE realm
// Copy the file from the default location to the new real location
let fileManager = FileManager.default
let originalPath = Realm.Configuration.defaultConfiguration.fileURL!
let appGroupURL = FileManager.default
.containerURL(forSecurityApplicationGroupIdentifier: "group.com.xx.siri")!
.appendingPathComponent("default.realm")
do{
try _ = fileManager.replaceItemAt(appGroupURL, withItemAt: originalPath)
}
catch{
print("Error info: \(error)")
}
不要忘记为迁移制作系统,所以这段代码只需 运行 一次