运行kotlin realm demo canon

kotlin版本1.0.0,领域版本0.88.0-SNAPSHOT我下载领域kotlin演示,并运行,如果代码是这样的:

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,年龄为空值或0;

如何解决它

随着境界0.88.0-SNAPSHOT你也必须使用他们的Gradle插件。 如果你是谷歌这个异常( realm java.lang.ClassCastException ProxyInterface ),你会发现这个Github问题 – 2353说:

我们只是将我们的字节代码编织器合并到了主控器中,听起来好像没有被触发。 请注意,从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最新版本中的更改发行说明。