Ray*_*ond 2 ios completionhandler swift
我遵循代码,但收到completionHandler 错误
没有更多上下文,表达类型不明确
据我了解,这是由于completionHandler 不匹配造成的。如何为completionHandler 返回错误的字符串/有意义的详细信息?
func fetch(urlString: String, completionHandler: @escaping (T?, Error?) -> Void) -> Void {
//...
guard let url = URL(string: urlString) else {
print("Failed to create URL!")
DispatchQueue.main.async {
completionHandler(nil, "Bad URL") // gives error: Type of expression is ambiguous without more context
}
return
}
}
Run Code Online (Sandbox Code Playgroud)
Error?您为to传递了错误的参数类型completionHandler。Error?不是一个String。
要解决此问题,请创建NSError并使用它而不是String:
let error = NSError(domain: "com.myAppPackageName", code: 1, userInfo: [
NSLocalizedDescriptionKey : "Bad URL"
])
completionHandler(nil, error)
Run Code Online (Sandbox Code Playgroud)
或者创建自定义错误枚举类型:
enum Error: String, Swift.Error {
case badURL = "Bad URL"
private var errorCode: Int {
switch self {
case .badURL:
return 100 // your error code
}
}
var foundationError: NSError {
return NSError(domain: "com.myAppPackageName", code: errorCode, userInfo: [
NSLocalizedDescriptionKey : self.rawValue
])
}
}
...
completionHandler(nil, Error.badURL.foundationError)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10443 次 |
| 最近记录: |