2016-10-26 1 views
0

Je voudrais envoyer une demande au serveur après un délai, mais si l'utilisateur a changé l'état de UITextFiled cette demande devrait être terminée. Ce que j'ai maintenant estGCD terminer la demande

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
    sessionManager.session.invalidateAndCancel() 
    APIModel().searchRequest()... 
} 

mais cela n'arrête en fait pas la demande d'accès au serveur. Je suppose que je devrais utiliser GDCdelay pour attendre une seconde avant d'envoyer la demande, puis, si UITextField changé, mettez fin. Mais je n'ai pas pu trouver un exemple de cette réalisation logique.

Répondre

1

Vous ne pouvez pas "terminer" une demande.

Vous pouvez créer un objet avec une propriété "annulée". Ensuite, vous envoyez le code qui accède à cet objet, et qui, au moment opportun, vérifie si la propriété "annulée" est vraie. Et de l'extérieur, vous mettez annulé à vrai quand vous en avez envie.

Si l'opération parvient à se terminer et détecte qu'elle a été annulée, elle ne devrait alors générer aucun message d'erreur et ne rien faire d'autre, puisqu'elle a été annulée.

+0

eu l'idée, merci – JuicyFruit