permet de comprendre avec un exemple. Laissez-moi deviner que vous avez créé une classe pour gérer tous les trucs webservice realted là-bas. (si pas encore alors il sera bon d'en créer un pour la meilleure pratique).
Maintenant, créez deux typealias pour gérer la réponse.
ici est: -
ici, je suppose encore une fois que vous voulez tout dictionnaire pour une réponse de succès et erreur pour une réponse d'échec.
typealias successCompletion = (([String:Any]) ->())
typealias failureCompletion = ((Error) ->())
maintenant ici son un WSManager classe pour manipuler toutes les API Articles liés là-bas.
class AlamofireManager {
static func sampleFunctionOfWebService(successCompletion:successCompletion , failureCompletion:failureCompletion) {
if success {
successCompletion(["Key":"success"])
} else {
failureCompletion(-1005 as! Error)
}
}
}
vous devez passer les deux typealias en fonction pour obtenir CallBack dans la classe désirée.
Ici, à seule fin de compréhension, nous allons transmettre le dictionnaire statique : -> ["Key": "success"] et static -1005 comme erreur.
maintenant comment utiliser cette fonction dans notre classe désirée?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func wsCalling() {
AlamofireManager.sampleFunctionOfWebService(successCompletion: { (dict) in
print(dict)
}) { (error) in
if error.code == -1005 {
self.wsCalling() // recall API Again
} else {
// your other logic
}
}
}
}
Je ne l'ai pas mentionné ici pour URLSeeionTask et tout, sa bonne chose à gérer URLSeeionTask. Si vous avez une instance de URLSeeionTask de API précédente, annulez-la d'abord, puis essayez de la rappeler à nouveau.
Codage heureux.
montrer votre essayé le code –
je ne pouvais pas définir d'où Alamofire appelle le succès ou le bloc d'échec de la demande donné –
Avez-vous lu cette https://github.com/Alamofire/Alamofire –