在 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&lt;Data?&gt;? 更改为DataResponse&lt;Data&gt;?.response 更改为.responseData。如果您有更改所需方法签名的旧版本。

【讨论】:

以上是关于在 authManger.Login wapper 函数中实现关闭以进行 Alamofire 身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

[MyBatisPlus]条件构造器wapper

SSH协议与TCP Wapper

14.LAMP服务 Linux Apache Mysql Php和防护机制 xinetdtcp wapper

动态更改窗口大小

鼠标经过图上移动代码

MybatisPlus 学习条件构造器和常用接口