2016-08-01 29 views
-1

Ich mache meine Anfrage mit Alamofire Lib und ich habe eine Klasse für Anfragen wie Login, Registrieren, ... so brauche ich eine Schnittstelle zu bemerken, wenn Alamofire Antworten erhält. Wie kann ich das schnell machen?Verwenden Sie Schnittstelle, um Antwort von einer anderen Klasse zu erhalten

dieser Teil meines Trans.swift ist

class Trans{ 
func getToken(username: String , password: String){ 
    Alamofire.request(.GET, "http://www.shafadoc.ir/api/DocApp/Token?value=" + username + ":" + password ,parameters:nil) 
     .responseJSON{ response in 
      if let json = response.result.value{ 
      } 
    } 
} 
} 

und meine LoginViewController:

if !login_password.text!.isEmpty || !login_username.text!.isEmpty 
    { 
     var trans : Trans = Trans 
     trans.getToken(login_username.text!, password: login_password.text!) 
    } 

Antwort

2

Der Block zu .responseJSON Methode übergeben, wo Sie benachrichtigt werden, wenn die Anforderung abgeschlossen ist. Sie können einen Rückrufblock inübergeben und den Block innerhalb von .responseJSON aufrufen. Wie folgt aus:

func getToken(username: String , password: String, completion: Void -> Void){ 
    Alamofire.request(.GET, "http://www.shafadoc.ir/api/DocApp/Token?value=" + username + ":" + password ,parameters:nil) 
     .responseJSON{ response in 
      if let json = response.result.value{ 
      } 
      //... do anything you want with the result, and finally: 
      completion() // <-- call the block 
    } 
} 

Ihrer Ansicht Controller:

if !login_password.text!.isEmpty || !login_username.text!.isEmpty 
{ 
    var trans : Trans = Trans 
    trans.getToken(login_username.text!, password: login_password.text!) { 
     //... do your UI stuff 
    } 
} 
+0

können Sie schreiben ein Beispiel dafür? Ich mache meine Anfrage in einer Login-Methode Ich LoginViewController und Anfragen sind in Trans.swift –

+0

Bitte posten Sie Ihren bestehenden Code zuerst. – Fujia

+0

aber wie kann ich Antwort in meinem UI-Controller erhalten? –