领域 - 在realm.create中捕获异常

时间:2015-11-12 16:11:22

标签: ios swift realm

如何从Realm的框架中捕获create方法中的Exception?我正在尝试这样但我从来没有捕到关于重复主键的异常。

do {
    try! realm.write() {
    let person = realm.create(Person.self, value: ["Jim", 0])
    person.age.value = 30
}

}

catch {
    print("Error")
}

错误:

realm1[922:26059] *** Terminating app due to uncaught exception 'RLMException', 
reason: 'Can't set primary key property 'name' to existing value 'Jim'.'

1 个答案:

答案 0 :(得分:3)

do {...} catch {...}仅用于捕获从快速方法抛出的错误,而不是用于捕获异常。

  

标准的Cocoa约定是异常信号程序员错误,并不打算从中恢复。   - LLVM Docs

因此,如果抛出异常,通常意味着您在操作之前没有检查某些内容。在这种情况下,您应检查该主键已存在的Person,然后更新它,或者如果尚未存在,则创建新的Person