4

我无法开始使用 Realm.io,我已经在自己的项目以及 IntroExample 中尝试过。

当我尝试查找某些内容时,我得到:

java.lang.IllegalStateException:读取事务期间的可变方法调用。

当我尝试存储某些东西时,我得到:

io.realm.exceptions.RealmException:找不到生成的代理类

我似乎在某个地方有一个根本性的缺陷。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "lorem.ipsum"
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.jsoup:jsoup:1.8.+'
    compile 'io.realm:realm-android:0.71.0'
}
4

4 回答 4

7

@RealmClass您的模型类添加注释。我在同样的问题上苦苦挣扎,并在 Realm 的代理类生成中更深入了一些。仅生成带有 @RealmClass 注释的类。

@RealmClass
public class Category extends RealmObject {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
于 2014-10-12T14:43:44.123 回答
4

我尝试运行您的示例代码,但遇到了很多关于您的模型类的异常。看起来您的 getter 和 setter 已从默认值重命名,这当前破坏了注释处理器。

我试图将模型类更改为:

public class DataItem extends RealmObject {
    private String uuid;
    private String content;
    private boolean bool;

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public boolean isBool() {
        return bool;
    }

    public void setBool(boolean bool) {
        this.bool = bool;
    }
}

这似乎奏效了。

于 2014-10-10T07:35:59.407 回答
2

答案https://stackoverflow.com/a/26294208/1251958和答案https://stackoverflow.com/a/26326314/1251958的组合导致成功。

添加@RealmClass注释@Philluxx 提到后,我在AndroidStudio 中遇到错误,指出@ChristianMelchior 提到的所需语法

注意:您可能必须清除应用程序数据,因为忽略任何一项似乎都会导致数据库损坏,从而导致后续崩溃。

于 2014-10-13T03:39:39.087 回答
1

来自 Realm 的 Emanuele。

我查看了您在评论中发布的示例项目,我发现唯一的问题是 getter 和 setter 的命名。我们当然需要更好地记录这一点,但为了轻松获得可预测的行为,您应该让 IDE 为您自动生成 getter 和 setter。关于布尔值的一个注意事项:看起来如果你有一个布尔值,isValidAndroid Studio 将生成名为isValid()and的访问器setValid()。我不确定 Eclipse 在相同场景中的行为方式。无论如何,在注释处理器中,我们生成了类似的东西isIsValid()setIsValid()这当然是丑陋的,很快就会被修复。无论如何,如果你简单地命名你的布尔值,valid一切都会正常工作。

于 2014-10-10T07:49:16.823 回答