異なるデータベース、つまり領域を切り替える必要があります。特定のフォルダ(「.../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など)が作成されていないフォルダのように、レルムが何か起こっていることに気づいていないようで、更新後も古いデータが表示されます。
私たちは間違って何をしていますか?代わりに何をすべきですか? (言い換えれば、古いデータベースを適切に閉じて新しいデータベースを開く方法)
ありがとうございました!新しいコピーが、それが呼ばれるたびに作成されていないので、
- ハーディ