我正在使用基于API响应进行初始化的Swift模型Cardholder
,并且我试图弄清楚如果响应中的某些字段为null
会发生什么。这是extension
模型的(简化)Cardholder
,带有来自Decoder
的初始化程序:
extension Cardholder: DictionaryDeserializable, DictionarySerializable {
private enum CodingKeys: String, CodingKey {
case id = "id"
case firstName = "first_name"
case lastName = "last_name"
case dateOfBirth = "date_of_birth"
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decode(String.self, forKey: .id)
firstName = try container.decode(String.self, forKey: .firstName)
lastName = try container.decode(String.self, forKey: .lastName)
dateOfBirth = try container.decode(Date.self, forKey: .dateOfBirth)
}
}
对于我要手动测试的API响应,first_name
字段为null
,而我发现的是调试器直接移至{{1} } init
行之后的方法:
如果我按下“跳过”或“进入”按钮,就会发生这种情况。
据我对https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html的了解,此firstName =
方法是一种throwing函数,它将在其中引发的错误传播到调用它的作用域。我将如何进入该范围以找出此错误的最终后果?
答案 0 :(得分:3)
在Swift中抛出错误也不例外。这只是一种幻想。您可以像返回一样增加调用堆栈。跨步;这是单步执行功能右侧的按钮。