我想从 RealmList 类中获得一个扩展功能:
private inline fun RealmList<Any?>.saveAll() {
this.forEach {
item -> Realm.getDefaultInstance().insert(item!! as RealmModel)
}
}
但是每当我使用它时,就会出现这个错误:
我想从 RealmList 类中获得一个扩展功能:
private inline fun RealmList<Any?>.saveAll() {
this.forEach {
item -> Realm.getDefaultInstance().insert(item!! as RealmModel)
}
}
但是每当我使用它时,就会出现这个错误:
要实现这一点,请添加到扩展函数的通用声明中。如果这样的声明在RealmList
private inline fun RealmList<out Any?>.saveAll() {
this.forEach {
item -> Realm.getDefaultInstance().insert(item!! as RealmModel)
}
}
您的代码通常是不安全的。请修复您的代码,阅读文档,诸如此类。
此外, RealmList 需要? extends RealmModel
,因此您需要使用T: RealmModel
with out
。
fun <T: RealmModel> RealmList<out T?>.saveAll() {
Realm.getDefaultInstance().use { realm ->
val wasInTransaction = realm.isInTransaction()
try {
if(!wasInTransaction) {
realm.beginTransaction()
}
this.forEach {
item -> item?.let { realm.insert(it) }
}
if(!wasInTransaction) {
realm.commitTransaction()
}
} catch(e: Throwable) {
if(realm.isInTransaction()) {
realm.cancelTransaction()
}
}
}
}
也许您应该使用 Realms 方法插入而不是执行循环?这样你的扩展就变成了一个简单的调用:
fun <T: RealmModel> RealmList<out T?>.saveAll() = Realm.getDefaultInstance().insert(this)