我将一些 Swift 2 代码转换为 Swift 3,现在我的结构不再符合协议(protocol)。我显然有协议(protocol),每次我尝试重新应用它时,我都会收到另一个错误,无效的重新声明。我似乎无法弄清楚为什么会发生这个错误。这是我的代码,如果有人对错误或在哪里查看有任何建议?
struct wpOauth: wpOAuthProtocol, 🕵 {
typealias PropertyType = ObserverProperty
let propertyChanged = Event<ObserverProperty>()
//We'll need to access NSUserDefaults
let defaults = UserDefaults.standard
func getUserData(completionHandler: @escaping (String) -> ()) -> () {
guard let accessToken = defaults.string(forKey: "accessToken") else {
return
}
manager.request(siteUrl, method: .post, parameters: [
"access_token": accessToken
]).responseJSON { response in
guard let data = response.result.value else{
self.propertyChanged.raise(data: .NetworkError)
return
}
let json = JSON(data)
guard (json["error"].string != nil) else{
//Get username to be displayed in input field
guard let displayName = json["display_name"].string else{
return
}
completionHandler(displayName)
return
}
}
}
这是协议(protocol)
protocol wpOAuthProtocol {
func getUserData(completionHandler:(String) -> ()) -> ()
}
最佳答案
协议(protocol)定义与您的重新声明不匹配,这就是错误消息试图表达的内容。只需在协议(protocol)定义中的 (String)
之前添加 @escaping
即可修复错误
关于ios - 不符合协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42517007/