说我想知道用户是否为空。
这是我的代码:
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)
答案 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)。