我有两个viewControllers
:LoginViewController和NextViewController。现在,当app运行时,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
}
答案 0 :(得分:1)
考虑使用MVC模式,尤其是“模型”部分。创建一个对象,作为应用程序的共享数据模型。有新数据时更新它。根据更新与控制器加载的时间安排,它可以在数据更改时发送通知,也可以提供感兴趣的对象(控制器)可以查询的API以查找当前状态。