RealmSwift -开始/提交写



在我的健身追踪器应用程序中,我保存当前运行并调用反向地理定位方法,该方法应该获得运行发生的位置名称。

首先将' latestrn '写入realm,然后等待反向地理编码完成并尝试修改' latestrn '变量

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()
        })
    }

结果是一个异常

由于未捕获异常'RLMException'而终止应用程序,原因:'TheRealm已处于写事务中'

我做错了什么?我在文档中发现,在这种情况下应该使用beginWrite()commitWrite()方法。

不需要使用commitWrite()beginWrite()

try! realm.write {
   latestRun.place = place
 }

是充分的

这是因为

realm.beginWrite()

前面
try! realm.write {

它们都做同样的事情,打开一个"写作会话"。你应该只保留一个。

注意:如果你删除beginWrite行并决定使用闭包变体,不要忘记也删除

try! realm.commitWrite()

最新更新