我們需要在不同的數據庫,即領域之間切換。在特定文件夾(例如,「.../database/some.realm」)上存在活動數據庫,並且該數據庫可能會改變(例如,「.../database/other.realm」)。如何切換數據庫?
我們目前正在做的是:
(1)前面的操作數據庫:提交任何打開的事務和無效。
if realm.inWriteTransaction {
do {
try realm.commitWrite()
} catch {
...
}
} else {
...
}
realm.invalidate()
(2)將以前的數據庫移到新的位置。
(3)將新的數據庫移到操作位置。 (4)對於新的數據庫:創建一個新的配置並創建一個新的領域。
public func openDatabaseAtURL(url: NSURL) {
let config = Realm.Configuration(
fileURL: url,
inMemoryIdentifier: nil,
encryptionKey: nil,
readOnly: false,
schemaVersion: self.currentSchemaVersion,
migrationBlock: nil,
deleteRealmIfMigrationNeeded: false,
objectTypes: nil)
do {
let realm = try Realm(configuration: config)
self.realm = realm
} catch let error as NSError {
...
} catch {
...
}
}
雖然沒有錯誤,而新數據庫時使用正確的應用程序啓動下一次,我們想立刻擁有數據庫開關操作。然而,領域似乎沒有注意到發生了什麼事情,因爲在該文件夾中沒有創建任何領域的附加文件(.lock等),並且應用程序在刷新後仍然顯示舊數據。
我們做錯了什麼,我們應該怎麼做呢? (換句話說:我們如何正確「關閉」舊數據庫並「打開」新數據庫?)
非常感謝您的幫助!
- 哈迪