2017-01-15 2 views
3

영역이있는 Kotlin에서 테스트 프로젝트를 작성하려고합니다. 여기 내 모델의 :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에서 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 

나는 책이 java로만 작성된 경우에만 성공적으로 프로젝트를 빌드 할 수있다. 렐름과 코 틀린을 함께 사용하는 방법에 대한 제안이 있으십니까?

+0

버전 2.2.3과 함께 버전 0.87.4를 추가하면 안됩니다. – EpicPandaForce

+0

@EpicPandaForce, io.realm의 versont 2.2.3을 의미합니까 : realm-gradle-plugin? 나는 이것을 시도하고 "io.realm을 찾을 수 없습니다 : realm-gradle-plugin : 2.2.3"gradle 빌드 오류 – 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 (컨텍스트)를 호출해야했습니다. 여기에 설명 된대로 refresh(), clean() 및 allObjects() 메서드는 각각 waitForChange(), delete() 및 where(). findAll() 메서드로 대체되었습니다. https://github.com/realm/realm- java/issues/2864. 건배! – AlexKost

+0

waitForChange()는 refresh()와 다르게 작동합니다. 대신 http://stackoverflow.com/a/38839808/2413303을 사용하십시오. – EpicPandaForce

2
을 필요로하지

렐름 자바 4.1.0이 발표되었으며 Kotlin과 함께 렐름의 대부분의 문제가 해결되었습니다! open var을 사용하지 않고 var을 사용하면됩니다. my sample project을 테스트 할 수 있습니다. 필자의 샘플은 kotlin이있는 Realm 객체 서버의 모듈을 테스트하기위한 것입니다.

관련 문제