使用接口从另一个类获取响应

Posted

技术标签:

【中文标题】使用接口从另一个类获取响应【英文标题】: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!)
    

【问题讨论】:

【参考方案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。请更改||到 && 在你如果条件。 ;)

以上是关于使用接口从另一个类获取响应的主要内容,如果未能解决你的问题,请参考以下文章

使用片段从另一个类获取值时出现 NullPointerException [重复]

java:从另一个类获取私有变量,而不设置getter [重复]

从另一个类引用时获取窗口抛出空指针异常

从另一个类的 ObservableCollection 获取值

从另一个类获取原始变量名[重复]

如何从另一个类中的 ArrayList <List> 获取数据?