Search code examples
swiftrealmrealm-mobile-platform

Realm write transaction failing, despite being in transaction


I have this code, which should append messages with a new message:

func addMessage(_ message: Message) {
    do {
        try Realm().write {
            self.messages.append(message)
        }
    } catch let error {
        print("could not add message due to error:\n\(error)")
    }
}

However, I get an exception Cannot modify managed RLMArray outside of a write transaction It doesn't make any sense to me, because I'm already in a write transaction...


Solution

  • The trouble was I was using a plain Realm object with no special configuration. Since I am using Realm Mobile Platform, I needed to create a Realm object with the same config each time I want to write to that DB:

    let configuration = Realm.Configuration(
                    syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/speciail")!)
                )
    self.realm = try! Realm(configuration: configuration)
    
    //now do the write transaction!
    

    It took a bit of refactoring, but I have it now. My thanks to those of you who took the time to help me.