2017-02-07 23 views
0

Я создаю объект Realm с базой данных Realm. Я хочу объявить список integer моему объекту. Это мой класс:Ошибка: Тип 'int []' поля не поддерживается | как добавить целочисленный список в Realm?

@PrimaryKey 
private int id; 
private String name; 
private String image; 
private String thumbnail; 
private String message; 
private int[] genre; 
private int[] method; 

Когда я скомпилировать его, я получаю ошибку при

Error:(12, 8) error: Type 'int[]' of field 'genre' is not supported 

Что делать с этим? Я пробовал с List<Integer>, но не повезло.

Тогда я понял, что объект Integer не расширяет RealmObject, поэтому я не могу его использовать.

Любая идея поможет. Благодарю.

+0

Вы можете попробовать использовать 'RealmList ' для хранения списков чисел. – nbokmans

+0

@nbokmans это не работает. Причина, по которой я сказал в конце вопроса. Тогда я понял, что объект Integer не расширяет RealmObject, поэтому я не могу его использовать. – TruongHieu

+1

вы не можете сделать массив int [] без его инициализации .. –

ответ

7

What to do with this? I tried with List but no luck. Then i realized that Integer object doesn't extends RealmObject so I cannot use it.

Ну, вы можете использовать RealmList для этой цели:

@PrimaryKey 
private int id; 
private String name; 
private String image; 
private String thumbnail; 
private String message; 
private RealmList<RealmInt> genre; 
private RealmList<RealmInt> method; 

RealmInt.java

public class RealmInt extends RealmObject { 
    private int val; 

    public RealmInt() { 
    } 

    public RealmInt(int val) { 
     this.val = val; 
    } 

    // Getters and setters 
} 

И это, как вы бы добавить элементы к RealmList:

RealmList<RealmInt> list = new RealmList<RealmInt>(); 
in.beginArray(); 
while (in.hasNext()) { 
    list.add(new RealmInt(in.nextInt())); 
} 

И затем вы можете вызвать установщика основного класса RealmObject и передать list.

[SOURCE]

2

Люди всегда рекомендуют RealmList<RealmInt> и RealmList<RealmString>, но он приходит с кучей проблем, которые люди не осознают, пока они не столкнуться с ними.

Вместо этого, у вас есть два правильных варианта:

1.) сплющивающихся список Int в строку, например, хранить список как список JSON

private String genres; 

genres = "[1,2,3,4,5]"; 

2.) создать класс, представляет ваш Жанр

public class Genre extends RealmObject { 
    private int genre; 

    private Song song; 

    @Index 
    private int songId; 
} 

А с другой стороны

public class Song extends RealmObject { 
    @PrimaryKey 
    private int id; 
    private String name; 
    private String image; 
    private String thumbnail; 
    private String message; 
    private RealmList<Genre> genre; 
    private RealmList<Method> method; 
+0

Спасибо. Я попробую, если у меня возникнут проблемы с принятым ответом. – TruongHieu