java - Android:如何创建空 Realm 对象?

标签 java android kotlin realm

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

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

MyModel.kt

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

但是我收到了这样的错误:

java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsObject.cpp line 336

最佳答案

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

所以您应该必须将该代码包装在事务包装器中。

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.

或者使用realm的交易方法。

2)

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

注意:

此新创建的 Realm 对象上的所有写入操作都应在这些 Realm 事务 block 下执行。

关于java - Android:如何创建空 Realm 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57932402/

相关文章:

java - DAO 模式中的 TransferObject

java - Java 初始屏幕上的取消按钮

android - 如何让 Admob adblock 离开屏幕中心?

java - 正则表达式仅阻止数字或空格,但允许数字和空格作为输入

java - 撤消 Document.Replace 后如何防止光标移动

java - 在 Java 中逐字地在多个字符之后包装字符串

java - Android OpenGL 纹理/对象检测

android - 获取 View 属性的资源id

android - 使用 Room 数据库中的数据复制表

android - 如何在 Kotlin 中的 RecyclerView.Adapter 中使用 SharedPreferences?