我在我的应用程序中使用Realm作为后端.我创建了一个名为Setting的表.我按照Realm官方网站上给出的步骤在该表中添加了值.但是当我要从该表中检索值时,我得到了异常
"io.realm.exceptions.RealmMigrationNeededException:必须提供RealmMigration":"realm = Realm.getInstance(getApplicationContext());".
实际上,我是android和Realm的新手,所以找麻烦来理解什么是问题.
191*_*11z 74
编辑:对于Realm的新版本,添加了Realm.init(上下文上下文)
Realm.init(context);
RealmConfiguration config = new RealmConfiguration
.Builder()
.deleteRealmIfMigrationNeeded()
.build();
Run Code Online (Sandbox Code Playgroud)
注意:使用此配置选项,任何架构更改都将导致 数据丢失,具体为:
@Required 添加/删除@PrimaryKey 添加/删除@Index 添加/删除所以它主要是在应用程序处于开发阶段时推荐的.
或者按照官方文档添加迁移:
https://realm.io/docs/java/latest/#migrations
例如,
public class Migration implements RealmMigration {
@Override
public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
if (oldVersion == 0) {
RealmObjectSchema personSchema = schema.get("Person");
personSchema
.addField("fullName", String.class, FieldAttribute.REQUIRED);
oldVersion++;
...
// hash code, equals
Run Code Online (Sandbox Code Playgroud)
和
Realm.init(context);
RealmConfiguration config = new RealmConfiguration.Builder()
.migration(new Migration())
// .deleteRealmIfMigrationNeeded()
.build();
Run Code Online (Sandbox Code Playgroud)
yfs*_*fsx 19
如果您将应用程序上传到商店,"删除并重新安装应用程序"将不会对其他用户起作用,因此您必须使用"删除"领域并"重新安装"领域,而不是应用程序.这是方法,希望它会有所帮助!
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this).build();
try {
return Realm.getInstance(realmConfiguration);
} catch (RealmMigrationNeededException e){
try {
Realm.deleteRealm(realmConfiguration);
//Realm file has been deleted.
return Realm.getInstance(realmConfiguration);
} catch (Exception ex){
throw ex;
//No Realm file to remove.
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
对于最新的Realm(3.0.0),Realm更改了构造函数结构,因此您必须执行以下操作:
Realm.init(context);
RealmConfiguration config = new RealmConfiguration
.Builder()
.deleteRealmIfMigrationNeeded()
.build();
Run Code Online (Sandbox Code Playgroud)
这对我行得通
Realm.init(context);
Realm realm;
try{
realm = Realm.getDefaultInstance();
}catch (Exception e){
// Get a Realm instance for this thread
RealmConfiguration config = new RealmConfiguration.Builder()
.deleteRealmIfMigrationNeeded()
.build();
realm = Realm.getInstance(config);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25874 次 |
| 最近记录: |