1

Je suis nouveau dans swift ios,service web consommation pendant l'écran de démarrage en rapide

comment puis-je récupérer les données de webservice pendant le temps de l'écran d'accueil,

En d'autres termes, je veux faire écran de démarrage apparaît encore jusqu'à ce que l'application finit de récupérer des données.

J'ai essayé mis en fonction NSURLConnection.sendAsynchronousRequest appdelegate mais écran de démarrage pas attendre sendAsynchronousRequest pour terminer

Répondre

0

Je ne pense que c'est une bonne idée. Par exemple:

J'ai une très mauvaise connexion Internet, et votre application me montre l'écran de démarrage pendant quelques secondes. Donc je pense normalement que l'application va planter, ou quelque chose d'autre. Une meilleure approche serait de faire cela dans votre MainViewController, et montrer à l'utilisateur un écran Spinner/Load ou quelque chose comme ça.

Un bon moyen de faire des requêtes asynchrones dans swift est d'utiliser la (bonne) extension Alamofire. Surtout quand vous êtes nouveau sur iOS Swift.

https://github.com/Alamofire/Alamofire

Ensuite, dans votre viewDidLoad faire votre demande (dans ce cas, toujours comme fil d'arrière-plan)

 let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
     dispatch_async(dispatch_get_global_queue(priority, 0)) { 

     // load here spinner/load screen 

     // alamofire request 
     Alamofire.request(.POST, "http://www.test.com/service", parameters: ["foo": "bar"]) 
      .responseJSON { (req, res, json, error) in 
      .... 
+0

Merci pour votre idée, mais je veux aller chercher des données pendant l'écran de démarrage. – user3141421

+0

Et le thread ne jamais attendre une demande asynchrone, c'est pourquoi vous le rendre asynchrone (de sorte que l'interface utilisateur ne se bloque pas jusqu'à la fin de la demande) - c'est pourquoi votre splashscreen n'attendra pas votre réponse. – derdida

+0

Et expliquez pourquoi vous souhaitez effectuer une requête synchrone (dans votre cas) pendant l'écran de démarrage. Vous voulez montrer à l'utilisateur sur le premier VieController des contenus de votre service? – derdida

2

Vous pouvez créer un contrôleur de vue de l'écran Splash dans votre storyboard et la marquer comme la première Contrôleur de vue. Assignez-lui un contrôleur de vue personnalisé, tel que "SplashViewController.swift". Ce contrôleur de vue a des méthodes habituelles, telles que viewDidAppear, où vous pourriez avoir vos connexions réseau. Une fois que vous avez terminé, vous pouvez utiliser des segues pour diriger l'application vers le contrôleur de vue souhaité.