如何在Swift中将此异步Parse Login实现为CallBack函数

时间:2015-06-22 15:48:01

标签: ios swift asynchronous parse-platform callback

这是一个关于如何在Swift for Asynchronous函数中使用回调的问题。我无法理解回调是如何工作的。

我想在按下按钮时调用logIn()然后保持UI处于活动状态(即在logInWithUsernameInBackground等待响应时不阻止主线程。)

我的问题是如何将此函数放在另一个类中(即不在我的viewcontroller中),然后获取Bool登录是否成功?

**我只是想知道如何分割这个函数,当调用部分在我的ViewController中时,我可以有另一个onLoginComplete我可以放在其他类中。

func logIn() {

        PFUser.logInWithUsernameInBackground(tv_username.text, password:tv_password.text) {
            (user, error) -> Void in

            if error == nil {
                if user != nil {
                    // Yes, User Exists

                    self.goToMainMenu()

                } else {
                    // No, User Doesn't Exist
                    println("logIn() - User Doesn't Exist")
                }
            } else {
                //if error show popup                    
                self.showUIAlertPopup("Oops, something went wrong", msg: "Either user exists or you are not connected", btn_text: "Try again")
            }

        }
    }

我实际上要做的是将异步网络调用放在一个完全不同的类中。所以我的问题是 - 如果网络操作是在与ViewController不同的不同类中完成的话,如何在网络操作完成后更新ViewController?

1 个答案:

答案 0 :(得分:0)

你可以像我在这里一样使用完成处理程序。

class func getGroupFromNameWithBlock(name: String, completion: (result: Bool) -> Void){
    self.query().whereKey("name", equalTo: name).getFirstObjectInBackgroundWithBlock { (object, error) -> Void in
        if error == nil {
            completion(result: true)
        } else {
            completion(result: false)
        }
    }
}