0

我尝试通过以下代码创建一个空领域对象:

val realm = Realm.getDefaultInstance()
var arr = ArrayList<SildayAlarm>()
val myModel: MyModel? = realm.createObject(MyModel::class.java)

我的模型.kt

@RealmClass
open class MyModel(
    var code: Int? = 0
): RealmObject()

但我得到了这样的错误:

java.lang.IllegalStateException:无法在写事务之外修改托管对象。在 /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsObject.cpp 第 336 行

4

1 回答 1

1

使用领域实例创建对象将在领域数据库上执行事务。

因此,您应该将该代码包装在事务包装器中。

1)

val realm = Realm.getDefaultInstance()
realm.beginTransaction();   // To start realm transaction.
val myModel: MyModel? = realm.createObject(MyModel::class.java) // Create a new object
realm.commitTransaction();   // To complete realm transaction.

或者使用领域的交易方法。

2)

val realm = Realm.getDefaultInstance()
realm.executeTransaction { realm ->
      val myModel: MyModel? = realm.createObject(MyModel::class.java) // Create a new object
}

笔记:

这个新创建的领域对象上的所有写操作都应该在那些领域事务块下执行。

于 2019-09-14T05:10:37.530 回答