findFirstAsync() 返回“无效对象”,但 findFirst() 或 findAllAsync() 有效

问题描述 投票:0回答:2

我正在尝试使用

findFirstAsync
创建对 Realm 的异步调用。

Realm.getDefaultInstance().where<MyModel>().findFirstAsync()

但它总是会导致“无效对象”(它不会崩溃,但返回的对象在

false
上返回
isValid()
)。

这是一个问题,因为我想使用 LiveRealmObject 来检查构造函数中的

isValid()

另一方面,同步

findFirst()
正在工作(因此查询是正确的)并且
findAllAsync()
也正常工作(因此LiveRealmResults)。


解决方法(我目前使用的)是使用

findAllAsync()
并在侦听器 (LiveData-Observer) 中使用
firstOrNull()
获取第一个条目。

但是当只需要一件物品时,只退回一件物品会更干净。另外,我认为某个地方有一个错误,所以让我们修复它。

android realm android-livedata
2个回答
0
投票

AFAIK 唯一可能的方法是使用 LiveRealmResults,正如您所说,只需将结果限制为 1,使用

limit(1)


0
投票

findFirstAsync()
返回“无效对象”,因为它是我们异步获取的值,但在我的
onchangeListener
中的
Onchange
中,我成功获取了第一个对象,如果没有项目,那么在这种情况下我正在检查
isValid 
在这种情况下返回
false

© www.soinside.com 2019 - 2024. All rights reserved.