In meiner Fitness-Tracker-App, ich speichere aktuellen Lauf und rufen Sie Reverse Geolocation-Methode, die den Namen des Ortes erhalten soll, wo Lauf stattfand.RealmSwift - Begin/Commit schreibt
Zuerst schreibe ich ‚latestRun‘ zu Reich, dann warte ich auf die umgekehrte Geokodierung zu vervollständigen und versuchen ‚latestRun‘ zu ändern Variable
try! realm.write {
realm.add(latestRun)
}
if !savedLocations.isEmpty
{
ReverseGeocoder.getPlace(latitude: savedLocations[0].latitude, longitude: savedLocations[0].longitude, completionHandler: {
place in
realm.beginWrite()
try! realm.write {
latestRun.place = place
}
try! realm.commitWrite()
})
}
es ergibt sich mit einer Ausnahme
Terminating app due to uncaught exception 'RLMException', reason: 'The Realm is already in a write transaction'
Was mache ich falsch? Was ich in Dokumenten gefunden habe, ist, dass beginWrite()
und commitWrite()
Methoden in diesem Fall verwendet werden sollten.
jetzt habe ich 'fataler Fehler: 'versuchen!' Ausdruck hat unerwartet einen Fehler ausgelöst: Fehler Domain = io.realm Code = 1 "Kann eine nicht existierende Schreibtransaktion nicht committen" ' – DCDC
Das liegt daran, dass Sie die Zeile" try! " realm.commitWrite() '. Sie sollten es auch löschen. –