如何从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'.'
答案 0 :(得分:3)
do {...} catch {...}
仅用于捕获从快速方法抛出的错误,而不是用于捕获异常。
标准的Cocoa约定是异常信号程序员错误,并不打算从中恢复。 - LLVM Docs
因此,如果抛出异常,通常意味着您在操作之前没有检查某些内容。在这种情况下,您应检查该主键已存在的Person
,然后更新它,或者如果尚未存在,则创建新的Person
。