验证服务错误中的完成处理程序

时间:2018-04-17 10:58:37

标签: ios swift closures completionhandler

我正在执行登录操作并且我正在调用一个自定义身份验证服务,该服务有一个方法,该方法接收用户名和密码的字典并进行API调用。 Auth服务中的功能如下所示。

    func loginWithUserData(userData: Dictionary<String, Any> ,completion: @escaping (_ success:DataResponse<Any>)->Void) 
    {
       NetworkManager.sharedNetworkManager.performNetworkOperation(url: myEndpoint().userSession(), httpmethod: .post, parameters: userData) { response in
        completion(response)
    }
}

我调用Auth服务的函数如下:

    func performLoginAction(dictForLogin: [AnyHashable: Any]) {
       AuthenticationService().loginWithUserData(userData: dictForLogin as! Dictionary<String)
    }

Xcode抱怨我的performLoginAction函数中的参数缺少参数。我不知道在完成中添加什么:参数。什么是格式或者我应该为完成处理程序返回什么内容?

注意:我正在使用Swift 3。

2 个答案:

答案 0 :(得分:1)

您必须添加完成处理程序

func performLoginAction(dictForLogin: [AnyHashable: Any]) {
    AuthenticationService().loginWithUserData(userData: dictForLogin as! Dictionary<String, Any>, completion: { success in
       // do something with the `DataResponse<Any>` object
    })
}

或使用尾随闭包语法:

func performLoginAction(dictForLogin: [AnyHashable: Any], ) {
    AuthenticationService().loginWithUserData(userData: dictForLogin as! Dictionary<String, Any>) { success in
       // do something with the `DataResponse<Any>` object
    }
}

答案 1 :(得分:0)

你可以用这个 -

func performLoginAction(dictForLogin: [[String: Any]]) {
    AuthenticationService().loginWithUserData(userData: dictForLogin as! [[String: Any]]) { response in

    }
}