Swift: rappel asynchrone

Comment puis-je effectuer des rappels asynchrones chez swift? J'écris un petit Framework pour mon application car il est censé fonctionner sur les deux, iOS et OS X. J'ai donc mis le code principal qui n'est pas spécifique au périphérique dans ce framework qui gère également les requêtes vers mon api en ligne. Et évidemment je veux aussi que L'interface graphique de l'application et donc mes ViewControllers réagissent dès qu'une requête api est terminée. Dans Objective-C j'ai fait ceci en sauvegardant la vue contenant la fonction qui devait être appelée dans un id variable et la fonction elle-même dans un sélecteur variable. Puis j'ai invoqué la fonction en utilisant le code suivant:

SEL selector = callbackMethod;
((void (*)(id, SEL))[callbackViewController methodForSelector:selector])(callbackViewController, selector);

Comment puis-je accomplir ceci dans swift? Ou est-il une meilleure manière de faire ceci?

j'apprécie vraiment votre aide!

20
demandé sur stoeffn 2014-07-31 13:25:11

4 réponses

j'ai partagé le modèle que j'utilise pour ce scénario dans la gist suivante:https://gist.github.com/szehnder/84b0bd6f45a7f3f99306

en gros, je crée un DataProvider singleton.swift qui configure un client AFNetworking. Puis les contrôleurs de vue appellent des méthodes sur ce DataProvider, dont chacune est terminée par une fermeture que j'ai définie comme une typographie appelée ServiceResponse. Cette fermeture retourne un dictionnaire ou une erreur.