如果我發現我的複雜狀態是因爲遷移,是否有使用RealmBrowser或代碼覆蓋Realm數據庫版本的方法?覆蓋Realm數據庫中的模式版本
我需要刪除表的舊模式,從它,不知道如何做到這一點
我試圖迫使上config.schemaMigration
以前的版本編寫自定義一個時間偏移塊來解決問題,但領域在開始時抱怨。有沒有辦法強制Realm打開數據庫,所以我解決了遷移?
如果我發現我的複雜狀態是因爲遷移,是否有使用RealmBrowser或代碼覆蓋Realm數據庫版本的方法?覆蓋Realm數據庫中的模式版本
我需要刪除表的舊模式,從它,不知道如何做到這一點
我試圖迫使上config.schemaMigration
以前的版本編寫自定義一個時間偏移塊來解決問題,但領域在開始時抱怨。有沒有辦法強制Realm打開數據庫,所以我解決了遷移?
最安全的肯定是碰撞模式版本並修復新版本中的問題。以任何其他方式進行操作有可能會破壞用戶應用程序。
但是,如果你願意,你可以使用我們的動態API打開一個領域,而不會觸發遷移並進行更改有:https://realm.io/docs/java/latest/#dynamic-realms
然後刪除任何類做了以下的方法:
DynamicRealm realm = DynamicRealm.getInstance(config);
realm.beginTransaction();
realm.getSchema().remove("TableName");
realm.commitTransaction();
realm.close();
謝謝!有沒有相當於Swift的? – oulipo
在Swift中,您可以執行從您的架構中刪除的類的遷移,並調用['Migration.deleteData(_:)'](https://realm.io/docs/swift/latest/api/Classes/Migration .html#/ s:FC10RealmSwift9Migration10deleteDataFSSSb)從文件中完全清除該類。然後你可以使用['Realm.writeCopyToPath(_:encryptionKey:)'](https://realm.io/docs/swift/latest/api/Classes/Realm.html#/s:FC10RealmSwift5Realm15writeCopyToPathFzTSS13encryptionKeyGSqCSo6NSData__T_),這會寫一個新模式版本爲'0'的Realm文件。然後爲新文件設置所需的任何模式版本。 – jpsim
您必須爲指定版本和遷移的'Realm.getInstance()'方法提供配置,並且版本必須高於當前版本。 – EpicPandaForce