错误:输入' int []'不支持字段|如何将整数列表添加到Realm?

时间:2017-02-07 08:36:18

标签: java android list int realm

我正在使用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所以我无法使用它。

任何想法都会有所帮助。感谢。

2 个答案:

答案 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;