ios - 不符合协议(protocol)

标签 ios swift protocols alamofire

我将一些 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/

相关文章:

最后一个字节的 HTTP 范围请求

iOS 开发许可证和 iTunes 连接

ios - UITableViewCells 未扩展以适合文本

swift - 如何从 couchbase 服务器同步特定文档?

ios - 快速表格 View 向单元格添加自定义复选标记并从上一个单元格中删除复选标记

objective-c - 一些协议(protocol)问题

ios - 保存标签时变量返回 0

ios - 在 iOS 6 及更高版本上与 YouTube 和 Twitter 共享视频文件

ios - 无法将类型 '[String]' 的值转换为预期的参数类型 'String' : while appending arrays to get data from Fireabse in table view cell

c++ - 将字符串作为对函数指针 C++ 的引用传递