2016-08-03 3 views
-1

Ich versuche JSON von Funktion zurückzukehren, denn das tue ich:kann nicht Werte in Funktion in Swift Rückkehr

func getAllItems() -> JSON { 
    Alamofire.request(.GET, Links.sharedInstance.getAllItems, encoding: .JSON).validate().responseJSON { (response) in 
     do { 
      let json = JSON(data: response.data!) 

      return json 
     } 
    } 
} 

aber es gibt mir den nächsten Fehler:

Unexpected non-void return value in void function 

Wie kann ich repariere das? Ich habe versucht, mit einer lokalen Variable innerhalb von Func, aber in diesem Fall habe ich Null.

Irgendwelche Tipps?

+0

Sie verwenden, um die return-Anweisung im Antwortbereich, nicht in Ihrer Funktionsbereich. deklariere eine Var in deiner Funktion als var ret: JSON! Ersetzen Sie 'return json' durch 'ret = json' und danach 'return re', außerhalb des Antwortbereichs –

+1

@LucaNicoletti Nein. Sie können nicht von einer Schließung zurückkehren. OP sollte einen Rückruf verwenden. – Moritz

+0

@EricD Ich habe nicht gesagt, dass ich von einer Schließung zurückkehren soll. Ich habe ihm gesagt, dass er einer Variablen im Abschluss einen Wert zuweisen und danach zurückgeben soll, aber es würde einen Nullwert zurückgeben, wenn die Antwort nicht schnell genug ist. Sie sind eng, verwenden Sie besser einen Rückruf –

Antwort

0

Sie sollten Abschluss-Handler wie folgt verwenden:

func getAllItems(completion:(json: JSON?) -> (Void)) { 
     Alamofire.request(.GET, Links.sharedInstance.getAllItems, encoding: .JSON).validate().responseJSON { (response) in 
      do { 
       let json = JSON(data: response.data!) 

       completion(json) 
      } 
     } 
    } 
Verwandte Themen