私のフィットネストラッカーアプリでは、現在の実行を保存し、実行された場所名を取得するはずの逆ジオロケーションメソッドを呼び出します。RealmSwift - 書き込みを開始/コミットします
最初に私が書いた「latestRun」レルムに、そして私が完了して変更しようとする逆ジオコーディングのを待つ「latestRun」変数
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()
})
}
を、それは例外
Terminating app due to uncaught exception 'RLMException', reason: 'The Realm is already in a write transaction'
何と結果私は間違っている?私がドキュメントで見つけたのは、この場合にはbeginWrite()
とcommitWrite()
のメソッドを使用する必要があるということです。彼らの両方が、 "書き込みセッション" を開いて、同じことを行うだけで
try! realm.write {
前
私は 'fatal error: 'try!'式は予期せずエラーを発生させました:Error Domain = io.realm Code = 1 "存在しない書き込みトランザクションをコミットできません" – DCDC
これは、 'try! realm.commitWrite() 'それも削除する必要があります。 –