RLMException',原因:'试图在写事务之外修改对象 [英] RLMException', reason: 'Attempting to modify object outside of a write transaction

查看:81
本文介绍了RLMException',原因:'试图在写事务之外修改对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在编译以下代码时遇到以下错误:

I've encountered following error when I've complied following code:

*** 由于未捕获的异常RLMException"而终止应用程序,原因:尝试在写入事务之外修改对象 - 调用首先在 RLMRealm 实例上进行 beginWriteTransaction.'

*** Terminating app due to uncaught exception 'RLMException', reason: 'Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first.'

for outlet in brand.outlets! {
    let outl = OutletListRealm()
    outl.outletId = outlet.id
    outl.outletName = outlet.name!
    outl.brand = brand.id
    try! self.realm.write {
        self.realm.add(outl)
    }

    for override in outlet.override! {
        let overRide = OverRideObjectRealm()
        overRide.id = override.id
        overRide.name = override.name!
        overRide.brand = brand.name!
        overRide.outlet = outlet.name!
        outl.brand = brand.id
        try! self.realm.write {
            self.realm.add(overRide)
        }
    }
}

推荐答案

你需要在realm.write中做所有事情只需按如下方式更新您的代码.

You need to do all thing in realm.write Just update your code as follows.

参见:https://realm.io/docs/swift/latest/#writes

for outlet in brand.outlets! {
        let outl = OutletListRealm()
        try! self.realm.write {
            outl.outletId = outlet.id
            outl.outletName = outlet.name!
            outl.brand = brand.id
            self.realm.add(outl)
        }

        for override in outlet.override! {
            let overRide = OverRideObjectRealm()
            try! self.realm.write {
                overRide.id = override.id
                overRide.name = override.name!
                overRide.brand = brand.name!
                overRide.outlet = outlet.name!
                self.realm.add(overRide)
            }
        }
    }

这篇关于RLMException',原因:'试图在写事务之外修改对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆