当前位置:  开发笔记 > 编程语言 > 正文

Swift 3:'尝试修改写事务之外的对象 - 首先在RLMRealm实例上调用beginwritetransaction'

如何解决《Swift3:'尝试修改写事务之外的对象-首先在RLMRealm实例上调用beginwritetransaction'》经验,为你挑选了1个好方法。

当我尝试更新Realm中的对象时,会发生错误.我附上了我的代码.

class FHRealm
{
    static let sharedInstance = try! Realm()

    class func writeUserToRealm(userInfo:userInfo)
    {
        DispatchQueue.main.async {
            autoreleasepool
                {
                    sharedInstance.beginWrite()
                    sharedInstance.add(userInfo)
                    try! sharedInstance.commitWrite()
            }
        }
    }

    class func updateUserInRealm(userInfo:userInfo)
    {
        DispatchQueue.main.async {
            autoreleasepool
            {
                    sharedInstance.beginWrite()
                    sharedInstance.add(userInfo, update:true)
                    try! sharedInstance.commitWrite()
            }
        }
    }
}

我在ViewController中调用了Update函数.

FHRealm.updateUserInRealm(userInfo: userInfo.sharedInstance)

我不能指望出了什么问题.请帮我.



1> Yoam Farges..:

我没有看到你的问题的确切原因,但这可能是一个主角: sharedInstance可能在主线程上.你正在向它传递领域对象,也许是从另一个线程.

如果您阅读Realm文档:

跨线程使用Realm的唯一规则是记住Realm,RealmObject或RealmResults实例不能跨线程传递.

所以我首先要说的是,不是调用你的包装器,而是尝试直接从调用者对象进行操作.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有