我正在尝试使用Realm在Kotlin中建立一个测试项目.
这是我的模型:
open class Book : RealmObject() {
// Standard getters & setters generated by your IDE…
@PrimaryKey
open var id: Long = 0
open var title = ""
open var description = ""
open var author = ""
open var imageUrl = ""
}
这是我得到的例外:
FATAL EXCEPTION: main
Process: app.androidhive.info.realm, PID: 18782
java.lang.RuntimeException: Unable to start activity ComponentInfo{app.androidhive.info.realm/app.androidhive.info.realm.activity.MainActivity}: java.lang.IllegalArgumentException: Book is not part of the schema for this Realm
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalArgumentException: Book is not part of the schema for this Realm
我到处搜索解决方案,然后在build.gradle中添加类路径“ io.realm:realm-gradle-plugin:2.2.2”,
应用插件:“ realm-android”并
dependencies {
...
// Realm
compile 'io.realm:realm-android:0.87.4'
kapt "io.realm:realm-annotations:0.87.4"
kapt "io.realm:realm-annotations-processor:0.87.4"
}
进入模块应用程序中的构建脚本.这给了我另一个问题:
Error:(15, 48) Cannot access '<init>': it is public/*package*/ in
'Builder'
/Volumes/Toshiba/Users/macuser/Development/Android/Exersises/MyApplication/app/src/main/java/realmtest/realm/RealmController.kt
Error:(27, 15) Unresolved reference: refresh
Error:(34, 15) Unresolved reference: clear
Error:(53, 23) Unresolved reference: allObjects
[KOTLIN] deleting /Volumes/Toshiba/Users/macuser/Development/Android/Exersises/MyApplication/app/build/tmp/kotlin-classes/debug on error
如果Book用Java编写,则只能成功构建项目.
有什么建议让Realm和Kotlin一起工作吗?
解决方法:
使用RealmClass注释RealmModel接口
import io.realm.Realm
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
open class Example(
@PrimaryKey open var Id : Long = 0,
open var Field : String = ""
) : RealmModel
在模块gradle文件中添加
apply plugin: 'realm-android'
在项目gradle文件中添加
classpath "io.realm:realm-gradle-plugin:2.2.2"
无需其他编译/ kapt
标签:realm,kotlin,java,android 来源: https://codeday.me/bug/20191026/1935818.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。