查询 Realm Class 子对象的大小 - Kotlin
Query the size of a Realm Class Sub object - Kotlin
如何查询另一个领域对象中的领域对象的大小
我有两个领域 classes Competition
& User
。 User
是领域 class 也包含在 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.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.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()
如何查询另一个领域对象中的领域对象的大小
我有两个领域 classes Competition
& User
。 User
是领域 class 也包含在 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.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.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()