在回答您的问题时,您将其称为结果,并在成功时将其调用,将错误参数传递给。在成功情况下:
nil
onComplete(result, nil)
onComplete(nil, error)
类型。有关实际讨论。
我们偏爱“两个可选参数”模式,因为它使呼叫者明确地说,它将通过一个或另一个错误,但不是两者兼而有之的值或失败。Result
func fetchData(with someString: String, completion: @escaping (Result<[String], Error>) -> Void)) {
…
doingSomethingAsynchronous {
…
// if failed
if let error {
completion(.failure(error))
return
}
// if successful
completion(.success(value))
}
}
正式化了合同,使您免于解开选项,等等。
现在,我们将使用Swift并发,这要简单得多:
fetchData(with: string) { result in
switch result {
case .failure(let error):
print(error)
case .success(let value):
// do something with `value`
}
}
因此,您要么值一个值或错误。