【问题标题】:Use interface to get response from another class使用接口从另一个类获取响应
【发布时间】:2016-08-01 06:52:29
【问题描述】:

我正在使用 Alamofire lib 提出请求,并且我有一个用于诸如 Login、Register 等请求的类,因此我需要一个接口来通知 Alamofire 何时收到响应。我怎样才能快速做到这一点?

这是我的 Trans.swift 的一部分

class Trans{
func getToken(username: String , password: String){
    Alamofire.request(.GET, "http://www.shafadoc.ir/api/DocApp/Token?value=" + username + ":" + password ,parameters:nil)
        .responseJSON{ response in
            if let json = response.result.value{
            }
    }
}
}

还有我的 LoginViewController:

  if !login_password.text!.isEmpty || !login_username.text!.isEmpty
    {
        var trans : Trans = Trans
        trans.getToken(login_username.text!, password: login_password.text!)
    }

【问题讨论】:

    标签: ios swift request alamofire


    【解决方案1】:

    传递给.responseJSON 方法的块是在请求完成时通知您的地方。您可以在trans.getToken 中传递一个回调块并在.responseJSON 中调用该块。像这样:

    func getToken(username: String , password: String, completion: Void -> Void){
        Alamofire.request(.GET, "http://www.shafadoc.ir/api/DocApp/Token?value=" + username + ":" + password ,parameters:nil)
            .responseJSON{ response in
                if let json = response.result.value{
                }
                //... do anything you want with the result, and finally:
                completion()    // <-- call the block
        }
    }
    

    在您的视图控制器中:

    if !login_password.text!.isEmpty || !login_username.text!.isEmpty
    {
        var trans : Trans = Trans
        trans.getToken(login_username.text!, password: login_password.text!) {
            //... do your UI stuff
        }
    }
    

    【讨论】:

    • 你能发布一个例子吗?我在登录方法中提出我的请求我 LoginViewController 和请求在 Trans.swift
    • 但是如何在我的 UI 控制器中接收响应?
    • 如果您想将响应 JSON 传递给您的控制器,请将完成处理程序更改为 AnyObject -&gt; Void,然后调用 completion(json)
    • 嗨,tnx。请更改||到 && 在你如果条件。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2019-01-10
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多