捕获RealmSwift写错误,即删除

时间:2019-04-22 22:46:43

标签: swift realm

我究竟该如何捕获RealmSwift的添加/删除错误?

do {
    try realm.write {
        realm.delete(MyRealmObject())
    }
    completion(true)
} catch {
    completion(false)
}

在此示例中,我故意尝试删除刚刚组成的RealmObject(以使其失败),但是它没有捕获,而是出现此错误:

  

由于未捕获的异常“ RLMException”而终止应用程序,原因:“只能从其所属领域删除对象。”

我还没有看到有人处理特定的删除/添加错误的示例-这是有原因的吗?

2 个答案:

答案 0 :(得分:0)

领域开发人员使用其自定义描述NSError扩展Can only delete an object from the Realm it belongs to类,并在他们期望的错误的预定义列表中进行FatalError(这可能是为了很好地利用其库来提供帮助)开发人员正确使用它)),因此他们不会throw try可以catch

例外

答案 1 :(得分:0)

不确定这是否是您要查找的内容,但是以下代码捕获并标识了特定的添加错误。但是,访问不同领域实例的错误的处理方式不同。所以从这个开始...

Take coffee to go

然后展开...。执行以下操作,以确保要删除的对象与您要从中删除对象的领域匹配。

class MyObject: Object {
    @objc dynamic msg = ""
}

do {
    let realm = try Realm()

    let a0 = MyObject()
    a0.msg = "Hello, World"

    try! realm.write {
        realm.add(a0)
    }
} catch let error as NSError {
    print(error.localizedDescription)
}