2017-01-15 15 views
3

私はRealmでKotlinでテストプロジェクトを構築しようとしています。 は、ここに私のモデルです:Kotlinを使ってプロジェクトでRealmを設定できません

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でclasspath "io.realm:realm-gradle-plugin:2.2.2"apply plugin: '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で書かれている場合にのみ、私はプロジェクトを正常に構築できます。 レルムとコトリンを一緒に働かせる方法はありますか?

+0

バージョン2.2.3と一緒にバージョン0.87.4を追加しないでください。 – EpicPandaForce

+0

@EpicPandaForce、io.realmのvers.3.2.3:realm-gradle-pluginを意味しますか?私はこれを試してみましたが、 "io.realm:realm-gradle-plugin:2.2.3"のグラデルビルドエラーを見つけることができませんでした。エラー – AlexKost

答えて

2

使用RealmClass注釈+モジュールのGradleファイルで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 

apply plugin: 'realm-android' 

は、プロジェクトのGradleファイルで

classpath "io.realm:realm-gradle-plugin:2.2.2" 

追加追加追加のコンパイル/ kaptは

+0

ありがとう、@助けてくれました!場合によっては誰かを助ける:私はプロジェクトを構築するためにいくつかの変更を加えなければなりませんでした。 – AlexKost

+1

TheresはRealmConfiguretion.Build()コールでargsを必要とせず、前にRealm.init(コンテキスト)を呼び出さなければなりませんでした。 waitForChange()、delete()、where()。findAll()メソッドにそれぞれrefresh()、clean()、およびallObjects java/issues/2864。乾杯! – AlexKost

+0

waitForChange()はrefresh()とは違って動作します。代わりにthisを使用してくださいhttp://stackoverflow.com/a/38839808/2413303 – EpicPandaForce

2
を必要としません

レルムのJava 4.1.0がリリースされ、レットレットのほとんどの問題が解決しました! open varを使用する必要はありません。ただvarを使用してください。 my sample projectをテストできます。私のサンプルは、kotlinを使用したRealmオブジェクトサーバーのモジュールをテストするためのサンプルです。

関連する問題