ios - 身份验证服务错误中的完成处理程序

标签 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 函数中的参数缺少参数。我不知道要在 completion: 参数中添加什么。完成处理程序的格式是什么或我应该返回什么?

注意:我使用的是 Swift 3。

最佳答案

你必须添加完成处理程序

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
    }
}

关于ios - 身份验证服务错误中的完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876312/

相关文章:

ios - 在 WKWebView 中嵌入 YouTube 视频不起作用

ios - 如何在委托(delegate)中加载插页式广告并在另一个 View Controller 中显示?

ios - 修复通用的 Swift Crashlytics 错误

ios - UIScrollView 第一次创建在错误的位置

swift - 使用 Swift 在 UIActionsheet 中添加日期选择器

javascript - jQuery.ajax() 中的范围问题

objective-c - 变量是静态的,无需声明,所以,OSX iOS Apple 风格的 C 或 Obj-C?

iOS 图表禁用缩放

swift - 插入函数作为参数

javascript - 如何用 Javascript 覆盖 Image 对象