2016-04-15 16 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