Realm не обновляет объект - PullRequest
       13

Realm не обновляет объект

0 голосов
/ 20 февраля 2020

Я пытаюсь найти указанный c объект в области и обновить некоторые поля в нем. План состоит в том, чтобы запросить мою БД и найти мой объект на основе первичного ключа. Как только Realm извлекает мой объект, я изменяю поле в нем и пытаюсь вставить его в свою БД.

На другом экране я читаю обновленный объект, но, похоже, он имеет те же значения, что и раньше , Так что обновления никогда не было.

Есть идеи?

Это мой метод обновления:

fun updateObjectVisibility(code: String) {
    val realm = realmManager.getRealmInstance()

    realm.executeTransaction {
        val updatedModel = realm.where(MyModel::class.java)
                .equalTo("code", code)
                .findFirst()

        updatedModel?.visible = false
        it.insertOrUpdate(updatedModel!!)
    }

    realmManager.closeRealmInstance()
}

Это мой объект:

@RealmClass
open class MyModel() : RealmObject() {
    @PrimaryKey
    var code: String? = null
    var filed1: String? = null
    var field2: String? = null
    var price: String? = null
    var visible: Boolean = true

    constructor(
            code: String,
            filed1: String,
            field2: String,
            price: String,
            visible: Boolean = true
    ): this() {
        this.code = code
        this.field1 = field1
        this.field2 = field2
        this.price = price
        this.visible = visible
    }
}

А это Realm Manager

class RealmManager {
    private val realm = ThreadLocal<Realm>()

    @Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
    fun getRealmInstance(): Realm {
        Realm.getDefaultConfiguration()?.let {
            if (realm.get() == null) {
                realm.set(Realm.getDefaultInstance())
                return realm.get()
            }
            return realm.get()
        }
        throw IllegalStateException("Realm should have a valid configuration")
    }

    fun closeRealmInstance() {
        Realm.getDefaultConfiguration()?.let {
            realm.get()?.close()
            if (Realm.getLocalInstanceCount(it) <= 0) {
                realm.set(null)
            }
            return
        }
        throw IllegalStateException("Realm should have a valid configuration")
    }
}
...