android - 查询 Realm Class Sub 对象的大小 - Kotlin

标签 android kotlin realm

我如何查询在另一个 Realm 对象中的 Realm 对象的大小

我有两个 Realm 类 CompetitionUserUser 是一个 Realm 类,也包含在 Competition 中:

open class Competition (@PrimaryKey var competitionId: String?=null,
                      var user: User? =null): RealmObject()

open class User(@PrimaryKey var userId: String?=null,
                      var name: String? =null): RealmObject()

在某些时候,我想在 Competition 的特定 competitionId 中获取 User 的大小,但我遇到了一个挑战,我认为这是微不足道的

这是我尝试过的

var userObj = realm.where<Competition>().equalTo(
                "competitionId", competitionId
            ).findFirst().user.realm.where<User>().findAll().size

这给了我一个

kotlin.KotlinNullPointerException

堆栈跟踪:

2019-03-12 16:03:25.112 22028-22028/co.keepnet.bass W/System.err: kotlin.KotlinNullPointerException
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at co.keepnet.bass.ui.MainActivity$onClick$1.execute(MainActivity.kt:41)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at io.realm.Realm.executeTransaction(Realm.java:1431)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at co.keepnet.bass.ui.MainActivity.onClick(MainActivity.kt:37)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at co.keepnet.bass.data.adapter.CompetitionsAdapter$onBindViewHolder$1.onClick(CompetitionsAdapter.kt:75)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at android.view.View.performClick(View.java:6897)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at android.view.View$PerformClick.run(View.java:26101)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at android.os.Handler.handleCallback(Handler.java:789)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:98)
2019-03-12 16:03:25.113 22028-22028/co.keepnet.bass W/System.err:     at android.os.Looper.loop(Looper.java:164)
2019-03-12 16:03:25.114 22028-22028/co.keepnet.bass W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6944)
2019-03-12 16:03:25.114 22028-22028/co.keepnet.bass W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2019-03-12 16:03:25.114 22028-22028/co.keepnet.bass W/System.err:     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
2019-03-12 16:03:25.114 22028-22028/co.keepnet.bass W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

最佳答案

我的意思是, 相当微不足道,如果您使用 Realm 的功能(我认为是 3.5.0+)。

open class User(): RealmObject() {
    @PrimaryKey var userId: String? = null

    var name: String? = null

    @LinkingObjects("user")
    val userOfCompetitions: RealmResults<Competition>? = null
}

然后

val userCount = realm.where<User>()
                     .equalTo("userOfCompetitions.competitionId", competitionId)
                     .count()

关于android - 查询 Realm Class Sub 对象的大小 - Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55123063/

相关文章:

ios - 将 Realm 与应用程序和迁移捆绑在一起

android - RecyclerView - 删除行总是删除最后一行

android - 在 Kotlin 中,将 Long 转换为 uint32 ByteArray 并将 Int 转换为 uint8 的最简洁方法是什么?

java - 'createVideoThumbnail(String, Int) : Bitmap? ' 已弃用。在 Java 中已弃用

java - Netty 运行时验证,NioEventLoopGroup

swift - 模型中未定义主键,但显示主键错误

android - 对于 Android Material 支持库,我在哪里可以找到 CardView 和 RecyclerView?

android - 如何在android布局中制作带有圆角的背景图像?

ScrollView 中的 Android 按钮大小为屏幕的一半