iOS 中的 RealmSwift 问题 'write' 块

RealmSwift in iOS issue with 'write' block

我又遇到了一个关于写入块的问题 - 'SharedRealm.realm.write()' - 错误 - "Call can throw, but it is not marked with 'try' and the error is not handled",如何处理它。

这是代码:

func addItems(items:[Item]) {
    do {
        let rlm = try Realm()

        rlm.write { () -> Void in
            for item in items {
                rlm.add(item, update: true)
            }
        }
    }
    catch let rlmError {
        print("Realm() generated error: \(rlmError)")
    }
}

我仍然遇到同样的错误 - “:13: 调用可以抛出但未标记为 'try'”

由于 Realm() 可能会抛出错误,因此您需要将其包装在 do { try } catch 块中

extension Realm {

    public class func saveClosure(dbClosure: (Realm)->()) {
        do {
            let rlm = try Realm()
            rlm.write { () -> Void in
                dbClosure(rlm)
            }

        }
        catch let rlmError{
            print("Realm() generated error: \(rlmError)")
        }
    }
}

结帐https://gist.github.com/edwardIshaq/b5810ab35c30df10af24

rlm.write { ... } 可能会引发错误以及初始化程序,因此您也需要在此调用之前添加 try 运算符。