在 authManger.Login wapper 函数中实现关闭以进行 Alamofire 身份验证?
Posted
技术标签:
【中文标题】在 authManger.Login wapper 函数中实现关闭以进行 Alamofire 身份验证?【英文标题】:implementing closure in authManger.Login wapper function to Alamofire authenticate? 【发布时间】:2018-12-26 23:29:37 【问题描述】:我创建了这个静态函数 Login 来包装 Alamofire 验证函数。我有一个问题如何使用 Alamofire 验证实现关闭以及如何在异步操作中调用它。任何帮助将不胜感激:)
static func Login(username:String, password:String, completion: @escaping (_ success: Bool, _ response: DataResponse<Data?>?) -> ())
var response:DataResponse<Data?>?
AF.request("https://httpbin.org/basic-auth/\(username)/\(password)")
.authenticate(username: username, password: password)
.response resp in
response = resp
completion(true,response)
if(response?.response?.statusCode == 200)
completion(true, response)
else
completion(false, nil)
code from action outlet
@IBAction func loginAction(sender: UIButton)
AutheManager.Login(username: newAccountName, password: newPassword) (success, response) in
if (success == true)
// rest of code
else
【问题讨论】:
【参考方案1】:您对completion
的呼叫是错误的。它应该在completion
块内,如下所示,
static func Login(username:String, password:String, completion: @escaping (_ success: Bool, _ response: DataResponse<Data>?) -> ())
Alamofire.request(URL(string: "https://httpbin.org/basic-auth/\(username)/\(password)")!)
.authenticate(user: username, password: password)
.responseData (response) in
if response.response?.statusCode == 200
completion(true, response)
else
completion(false, nil)
上面是最新的Alamofire
的可编译示例,我将DataResponse<Data?>?
更改为DataResponse<Data>?
和.response
更改为.responseData
。如果您有更改所需方法签名的旧版本。
【讨论】:
以上是关于在 authManger.Login wapper 函数中实现关闭以进行 Alamofire 身份验证?的主要内容,如果未能解决你的问题,请参考以下文章