不符合协议

时间:2017-02-28 19:16:49

标签: ios swift protocols alamofire

我将一些Swift 2代码转换为Swift 3,现在我的struct不再符合协议。我明显有协议,每次我尝试重新应用它,我得到另一个错误,无效的redelacartion。我似乎无法弄清楚为什么会出现这种错误。这是我的代码,如果任何人有任何错误的建议,或在哪里看?

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 wpOAuthProtocol {
 func getUserData(completionHandler:(String) -> ()) -> ()
 }

1 个答案:

答案 0 :(得分:4)

协议定义与您的重新声明不匹配,这是错误消息试图说的内容。只需在@escaping之前在协议定义中添加(String)即可修复错误