2017-10-18 10 views
0

Je fais une tâche HTTP POST asynchronous, à l'achèvement J'ai besoin de renvoyer le résultat au lanceur viewcontroller. J'ai accroché au gestionnaire de complétion et tout fonctionne comme prévu. Mais je ne peux pas déclarer correctement la variable de retour en raison de cette erreurDéfinir la variable du contrôleur Launcher View à la fin de la tâche

Implicit use of 'self' in closure; use 'self.' to make capture semantics explicit

   dourltask() { isValid in 
       // do something with the returned Bool 
       DispatchQueue.main.async { 
        self.spinner.isHidden=true; 
        self.spinner.stopAnimation(self) if(isValid) { 
        Error ---->  if let presenter presenting as? ViewController { 
          if(isValid) { 
           presenter.bvalue=false 
          } 
         } 
        } 
+0

'si laisser le présentateur = self.presenting comme? ViewController {' –

+1

@LeoDabus Merci. – techno

+1

@Jack ... J'allais accepter votre réponse ... il semble que vous l'avez supprimé. – techno

Répondre

1

Chaque instance d'un type a une propriété implicite appelé soi, qui est exactement équivalent à l'instance elle-même. Vous utilisez la propriété auto pour faire référence à l'instance en cours dans ses propres méthodes instance .

dourltask() { isValid in 
       // do something with the returned Bool 
       DispatchQueue.main.async { 
        self.spinner.isHidden=true; 
        self.spinner.stopAnimation(self) if(isValid) { 
        if let presenter = self.presenting as? ViewController { 
          if(isValid) { 
           presenter.bvalue=false 
          } 
         } 
        }