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

Realm - Catch an exception in realm.create

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

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'.'

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

The standard Cocoa convention is that exceptions signal programmer error and are not intended to be recovered from. - LLVM Docs

因此,如果抛出异常,通常意味着您没有在操作前检查某些内容。在这种情况下,您应该检查一个 Person 是否已经存在并具有该主键,然后更新它或创建一个新的 Person(如果不存在)。