kotlin版本1.0.0,领域版本0.88.0-SNAPSHOT 我下载了realm kotlin demo,然后运行 如果这样的代码:
var person = Person()
person.id = 1
person.name = "Young Person"
person.age = 14
realm.beginTransaction()
realm.copyToRealm(person)
realm.commitTransaction()
抛出异常:引起:java.lang.ClassCastException:io.realm.examples.kotlin.model.Person无法强制转换为io.realm.PersonRealmProxyInterface
否则我改变了这样的代码:
realm.beginTransaction()
// Add a person
var person = realm.createObject(Person::class.java)
person.id = 1
person.name = "Young Person"
person.age = 14
// When the transaction is committed, all changes a synced to disk.
realm.commitTransaction()
然后领域插入一个数据,但是person.name,id,age是空值或0;
如何解决它
答案 0 :(得分:3)
使用Realm 0.88.0-SNAPSHOT,您还必须使用他们的Gradle插件。如果你谷歌这个例外(realm java.lang.ClassCastException ProxyInterface
),你会发现这个Github Issue - 2353说:
我们刚刚将字节码weaver合并到master中,听起来好像没有在你的情况下被触发。请注意,从0.88.0-SNAPSHOT开始,您必须使用我们的Gradle插件:https://realm.io/news/android-installation-change/
以前你会安装Realm,如:
repositories {
jcenter()
}
dependencies {
compile 'io.realm:realm-android:<version>'
}
现在您必须安装它以包含Gradle插件:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:<version>"
}
}
apply plugin: 'realm-android'
这样就可以打开字节码编织。如果没有这个,您会收到与第一个用例完全相同的错误(这是正确的代码,但对于您选择使用的快照版本,您还需要Gradle插件的这一额外步骤)。上面的链接中还有其他重要说明,以及最近版本的Realm的更改发布说明。