`User`不是这个领域的架构的一部分 - 如何找出用户是否'存在?

时间:2017-05-20 00:24:19

标签: android realm

说我想知道用户是否为空。

这是我的代码:

public boolean isEmpty() {
    Realm myRealm = Realm.getInstance(this);
    User results1 = myRealm.where(User.class).findFirst();
    return results1 == null;
}

如果是第一次使用该应用,我需要知道,因为如果是这种情况,我需要让用户填写表单。 (它不是真正的身份验证,只是一种简单的形式)。

在这种情况下,我如何知道用户是否存在而无需创建记录。

编辑:

这是堆栈:

FATAL EXCEPTION: main
      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ga.xuser/com.example.ga.xuser.View.Activities.Profile}: java.lang.IllegalArgumentException: User is not part of the schema for this Realm
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
      at android.app.ActivityThread.access$600(ActivityThread.java:141)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)

1 个答案:

答案 0 :(得分:1)

原因 - 缺少架构迁移。在创建新的RealmModel类(在您的情况下为User)时,需要向现有数据库模式添加新对象。或者您可以删除数据库,在这种情况下,Realm将创建包含所有模型的新模式。

移植

您可以在Migrations段落中找到非常干净的样本。如果需要更多详细信息,请参阅GitHub上的migration sample app

P.S。如果this中的关键字Realm.getInstance(this) - 它是Context的实例,则使用超级旧的Realm版本。如果我没记错的话,Realm.getInstance(Context)已在0.83.0中删除了。我siggest更新到最新版本的Realm(cerrent 3.2.1)。