Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Swift:在视图和完成处理程序之间传递数据_Ios_Swift - Fatal编程技术网

iOS Swift:在视图和完成处理程序之间传递数据

iOS Swift:在视图和完成处理程序之间传递数据,ios,swift,Ios,Swift,我有两个视图控制器:LoginViewController和NextViewController。现在,当应用程序运行LoginViewController时,它会运行一个完成处理程序来处理HTTP请求的身份验证,完成后,它会调用另一个闭包来获取必要的用户数据 我不知道如何将从回调函数返回的数据传递到NextViewController以显示它,因为我无法知道数据何时可用,因为它正在后台运行HTTP请求 那么,当数据可用时,我应该如何呈现数据呢 我知道我可以调用第二个回调方法来获取nextVie

我有两个
视图控制器
:LoginViewController和NextViewController。现在,当应用程序运行LoginViewController时,它会运行一个完成处理程序来处理HTTP请求的身份验证,完成后,它会调用另一个闭包来获取必要的用户数据

我不知道如何将从回调函数返回的数据传递到NextViewController以显示它,因为我无法知道数据何时可用,因为它正在后台运行HTTP请求

那么,当数据可用时,我应该如何呈现数据呢

我知道我可以调用第二个回调方法来获取nextViewController中的用户信息,但这会使应用程序速度变慢

下面是示例代码:

class Methods: NSObject {

    //Singleton
    class func sharedInstance() -> Methods {
        struct Singleton {
            static var sharedInstance = Methods()
        }
        return Singleton.sharedInstance
    }


    private func GETMethod(callBackMethod: (Success: Bool) -> Void) {
        //Do the authentication
    }

    private func retriveUserData(callBackMethod: (data: String, Success: Bool) -> Void) {
        //Gets the data and passes processed data back in a callBackMethod
    }

    func doAuthentication(callBackMethod: (Success: Bool) -> Void){
        GETMethod { (Success) in

            if Success {
                self.retriveUserData({ (data, Success) in


                    data // <- HOW DO I GET THIS INTO LOGIN VIEW CONTROLLER?


                    callBackMethod(Success: true)
                })
            }
        }
    }
}


class LoginViewController: UIViewController {

    func loginButtonPressed(){
        Methods.sharedInstance().doAuthentication { (Success) in

        }
    }

}

class NextViewController: UIViewController {

    //Present data when it becomes available
}
类方法:NSObject{
//独生子女
类func sharedInstance()->方法{
结构单体{
静态变量sharedInstance=Methods()
}
返回Singleton.sharedInstance
}
private func GETMethod(callBackMethod:(Success:Bool)->Void){
//进行身份验证
}
private func retrieveuserdata(callBackMethod:(数据:字符串,成功:Bool)->Void){
//获取数据并在回调方法中传递处理后的数据
}
func-doAuthentication(callBackMethod:(Success:Bool)->Void){
中的GETMethod{(成功)
如果成功{
self.retrieveUserData({(数据,成功)在

data//考虑使用MVC模式,尤其是“模型”部分。创建一个对象作为应用程序的共享数据模型。当您有新数据时更新它。根据更新与控制器加载的时间,它可以在数据更改时发送通知,也可以提供一个API来通知感兴趣的对象(控制器)可以查询以找出当前状态