2016-03-19 8 views
1

Ich bin relativ neu in Swift und verstehe immer noch das Konzept von Schließungen. Ich habe diesen Beitrag bereits gelesen (Anonymous closure can not be used inside a closure that has explicit arguments). Die Antwort ist jedoch, den Filter von() zu {} zu ändern, aber ich weiß nicht, wie ich das für meine Funktion implementieren soll.Anonyme Abschlussargumente können nicht innerhalb eines Abschlusses verwendet werden, der ein explizites Argument hat

<<< ImageRow() 
      { 
       $0.tag = "Image" 
       $0.title = "Choose your profile pic" 
       if let tutorPic = currentuser!.objectForKey("ProfPhoto") as! PFFile! 
       { 
        tutorPic.getDataInBackgroundWithBlock({(imageData:NSData?,error:NSError?)->Void in 
         if(error == nil) 
         { 
          let image = UIImage(data: imageData!) 
          print("YOOWAHH") 
          print(image) 
          print("***********") 
          self.imagez = image 
          print(self.imagez) 
          $0.value = imagez 


         } 
        }) 


       } 


     } 

Der Fehler ist in Zeile $0.value = imagez.

Ich habe die Bilddaten aus Parse heruntergeladen und möchte es als meinen Standardwert für mein Formular festlegen. Allerdings sagt der Compiler, dass ich bereits explizite Argumente habe, so dass er nicht mehr auf die Argumente des Formulars verweist. Wie repariere ich Dies?

Antwort

2

Das Problem ist, weil jeder Block separat für den Versand behandelt wird und so, dass es nicht weiß, wie man einen Verweis zurück auf den anderen Block für $0. Unabhängig davon, ob Sie den umschließenden Block explizit definiert haben, wird der Compiler annehmen, dass dies der Block ist, den Sie mit $0 gemeint haben.

Um dies zu beheben, sagen Sie einfach in Ihrem oberen Block: let myButton = $0, und dann beziehen Sie sich auf myButton im umschließenden Block.

Wenn Sie in Zukunft nicht wissen, wie die Form des Blocks aussehen soll, schreiben Sie den Funktionsaufruf einfach neu, und Autocomplete bringt den Rest des Blockformats zurück.

Verwandte Themen