Ich arbeite an einem ios app, wo in meinem appDelegate
ich habe:Warten Sie, bis ein asynchroner api Anruf beendet ist - Swift/IOS
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
self.api.signInWithToken(emailstring, token: authtokenstring) {
(object: AnyObject?, error:String?) in
if(object != nil){
self.user = object as? User
// go straight to the home view if auth succeeded
var rootViewController = self.window!.rootViewController as UINavigationController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as HomeViewControllerenter
// code here
rootViewController.pushViewController(homeViewController, animated: true)
}
}
return true
}
Die api.signInWithToken
ein asynchroner Aufruf mit Alamofire gemacht ist, und ich würde Ich warte gerne auf die Fertigstellung, bevor ich am Ende der Func-Anwendung auf true zurücktrete.
Swift hat diese Art von Funktionalität nicht. Sie sollten Ihren Fenster- und Root-View-Controller im Hauptteil von "didFinishLaunching" einrichten, möglicherweise mit einer Ladegrafik, und dann zu einem neuen View-Controller im API-Abschlussverarbeiter navigieren. –
didFinishLaunching ist veraltet, aber das klingt nach einer guten Idee –