2017-12-22 16 views
1

프리미티브 목록을 기존 모델에 추가하고 싶지만 예외가 발생합니다.
주의 : 이것은 모두 수행되었습니다 그것 Kotlin. 내가 작업하는 데 사용 빈 RealmList (로 초기화RealmList 추가시 RealmMigrationNeededException <Int> (Kotlin)

var idList: RealmList<Int> = RealmList() 

이것은 빈리스트가 될 수 :

open class Foo(
    @PrimaryKey var id: Int = 0 
) : RealmObject() 

는 이제 다음 필드를 추가 할 : 여기

모델입니다 비 프리미티브 목록 필드의 경우).

내 이동은 다음과 같습니다

인해 다음 오류로 마이그레이션이 필요

: 응용 프로그램을 실행하는 경우

schema.get("Foo") 
     ?.addRealmListField("idList", Int::class.java) 

, 내가 RealmMigrationNeededException 얻을
- 속성 ' Foo.idList '가 선택되었습니다.


나는 모델의 새로운 분야에 @Required를 추가하여이 문제를 해결할 수 있지만 목록은 아직 null를/비어있을 수 있는지 확실하지 않습니다.

모델에 프리미티브 목록을 추가하는 올바른 방법은 무엇이며 이에 대한 올바른 마이그레이션은 무엇입니까?

+0

어떤 렐름 버전을 사용하십니까? – Mike

+0

'Int :: class.javaPrimitiveType '을 시도해 볼 수 있습니다.'RealmList '을'@ Required'를 추가하기를 원할 수도 있습니다. 단지이 RealmList가 'null'을 값으로 포함 할 수 없음을 의미합니다. – EpicPandaForce

+0

javadoc가 업데이트됩니다 https://github.com/realm/realm-java/pull/5646 – beeender

답변

2

실제로 마이그레이션이 올바른 것입니다. 목록에 null (값이 RealmList<Integer>인데, Integer이 null 일 수 있음)을 포함 할 수 없도록하려면 @Required 주석을 추가해야합니다.

+0

흠, 이렇게 명확하게하기 위해 (당신의 텍스트는 혼란 스럽습니다) :'RealmList '*는'null'을 포함 할 수 없습니다 하지만 'Integer'를 사용할 수 있습니까? 그리고 만약이 kotlin-non-null-type을 사용하고 싶다면 * @ Required를 추가해야합니까? 이것은 나에게 좋을 것이다. 고마워. – hardysim

+0

아니요, @ 값이 null이라는 것을 정수로 저장할 수 없음을 의미합니다. – EpicPandaForce

+0

혼란이 완료되었습니다. 다음과 같습니까? 'Integer'를 사용할 때 I *는'null '을 사용할 수 있지만'@ Required'를 추가하면'/'를 사용하지 않고'Int'를 사용할 때 디폴트로'null'을 사용할 수 없습니다. 권리? 그러나'nulls '을 원하지 않으면 왜'Int'를 사용할 때'@ Require'가 필요합니까? 왜냐하면'Int'와'Integer'가 Realm과 동일하기 때문입니까? 그렇다면 null이 아닌 int 값을 원할 때 올바른 점은 무엇입니까? – hardysim