2017-02-02 1 views
0

Bitte helfen Sie mit Real-Objekte hinzufügen/aktualisieren Ich möchte Benutzerklasse speichern und aktualisieren. Die Benutzerklasse besteht aus der Clientklasse . Die Clientklasse besteht aus der Avatar-Eigenschaft und der Rooms-Liste. Problem ist, dass mir der Fehler "Der Realm befindet sich bereits in einer Schreibtransaktion" angezeigt wird, weil meine Client-Klasse-Avatara-Eigenschaft und die Rooms-Liste in verschiedenen Schließungen zur gleichen Zeit abgerufen und nach Realm verschoben werden.RealmSwift Update-Objekt in verschiedenen Threads (Schließungen)

Antwort

0

Wie Realm sagt, haben Sie einen Fehler in der Logik Ihrer App, wenn Sie versuchen, zwei Schreibtransaktionen in einem Thread zu öffnen. Ich würde Ihnen empfehlen, Ihre Logik zu überprüfen, um zu sehen, ob Sie sie schlanker gestalten können.

Aber in jedem Fall, um Ihren aktuellen Code zu beheben, wäre eine Möglichkeit, dies zu verringern, zu überprüfen, dass Sie nicht bereits in einer Schreibtransaktion sind, wenn Sie die Avatar-URL festlegen.

func getAvatarURL() { 
    let inWriteTransaction = realm?.isInWriteTransaction 
    do { 
     if !inWriteTransaction { 
      realm?.beginWrite() 
     } 

     avatarURL = avatarDelegate?.contactAvatarURL(eExtention: eExtention) 

     if !inWriteTransaction { 
      try realm.commitWrite() 
     } 
    catch let e { 
     print(e.localizedDescription) 
    } 
}