我正在使用Realm数据库创建Realm对象。我想将List integer
声明为我的对象。这是我的班级:
@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 :(得分:7)
该怎么办?我尝试使用List但没有运气。然后我 意识到Integer对象没有扩展RealmObject所以我不能 用它。
嗯,您可以将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
类的setter并传递list
。
[SOURCE]
答案 1 :(得分:2)
人们总是推荐RealmList<RealmInt>
和RealmList<RealmString>
,但它会附带一系列人们在遇到这些问题之前并未真正意识到的问题。
相反,您有两个正确的选择:
1。)将int列表展平为String,例如将列表存储为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;