我正在尝试使用
findFirstAsync
创建对 Realm 的异步调用。
Realm.getDefaultInstance().where<MyModel>().findFirstAsync()
但它总是会导致“无效对象”(它不会崩溃,但返回的对象在
false
上返回 isValid()
)。
这是一个问题,因为我想使用 LiveRealmObject 来检查构造函数中的
isValid()
。
另一方面,同步
findFirst()
正在工作(因此查询是正确的)并且 findAllAsync()
也正常工作(因此LiveRealmResults)。
解决方法(我目前使用的)是使用
findAllAsync()
并在侦听器 (LiveData-Observer) 中使用 firstOrNull()
获取第一个条目。
但是当只需要一件物品时,只退回一件物品会更干净。另外,我认为某个地方有一个错误,所以让我们修复它。
AFAIK 唯一可能的方法是使用 LiveRealmResults,正如您所说,只需将结果限制为 1,使用
limit(1)
findFirstAsync()
返回“无效对象”,因为它是我们异步获取的值,但在我的onchangeListener
中的Onchange
中,我成功获取了第一个对象,如果没有项目,那么在这种情况下我正在检查isValid
在这种情况下返回 false
。