用户尝试在Realm中立即发送下一条消息时出错

时间:2017-12-07 10:57:46

标签: ios swift3 realm realm-list

以下是我用于在领域数据库中创建对象的两个领域模型

class RosterViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
    var realm : Realm!
    dynamic var users = Users()
    var userResult : Results<Users>!
    dynamic var messagedata = Messages()
    var messageResult : Results<Messages>!

    override func viewDidLoad() {
        super.viewDidLoad()
        realm = try! Realm()
        notificationToken = realm.observe{ notification, realm in
            self.contactsTableView.reloadData()
        }
    }

    func xmppStream(_ sender: XMPPStream, didReceive message: XMPPMessage) {
         .......
        // parse xml and set object values here     

        userResult = realm.objects(Users.self)
        messageResult = realm.objects(Messages.self)

        try! realm.write {
            users.userMessages.append(messagedata)
            realm.add(users, update: true)
            realm.add(messagedata, update: true)
            }
        }
    }
}

这是我的RosterViewController,我在tableViewCell中显示'phoneNumber'和最新的'messageBody'。我使用 XMPP Framework 来接收消息,使用 SwiftyXMLParser 来解析xml消息。

array

我想将消息动态附加到相应邮件发件人的用户列表中。我无法这样做。我正在实时接收消息,因此它们应该附加到列表中,从而在tableView上反映出相同的消息。 第一条消息正确显示,但当同一用户立即发送另一条消息时,我收到错误消息:

RLMException',原因:'尝试修改写事务之外的对象 - 首先在RLMRealm实例上调用beginWriteTransaction

我也尝试了很多,但无法获得任何修复或解决方法。请帮我解决这个问题,刚开始用境界。谢谢!

0 个答案:

没有答案