2016-04-15 42 views
0

如果我發現我的複雜狀態是因爲遷移,是否有使用RealmBrowser或代碼覆蓋Realm數據庫版本的方法?覆蓋Realm數據庫中的模式版本

我需要刪除表的舊模式,從它,不知道如何做到這一點

我試圖迫使上config.schemaMigration以前的版本編寫自定義一個時間偏移塊來解決問題,但領域在開始時抱怨。有沒有辦法強制Realm打開數據庫,所以我解決了遷移?

+0

您必須爲指定版本和遷移的'Realm.getInstance()'方法提供配置,並且版本必須高於當前版本。 – EpicPandaForce

回答

0

最安全的肯定是碰撞模式版本並修復新版本中的問題。以任何其他方式進行操作有可能會破壞用戶應用程序。

但是,如果你願意,你可以使用我們的動態API打開一個領域,而不會觸發遷移並進行更改有:https://realm.io/docs/java/latest/#dynamic-realms

然後刪除任何類做了以下的方法:

DynamicRealm realm = DynamicRealm.getInstance(config); 
realm.beginTransaction(); 
realm.getSchema().remove("TableName"); 
realm.commitTransaction(); 
realm.close(); 
+0

謝謝!有沒有相當於Swift的? – oulipo

+0

在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