原諒我對於swift來說相當新穎。我想創建一個用於「POST」請求並從服務器獲得響應的委託。然後將從服務器返回的參數傳遞給func,並允許我的主類相應地進行響應。下面是我的代表和我的主要班級。它沒有在LoginViewController類中輸出響應日誌。我有點失落,不知道它出錯的地方。建議/指示我怎樣才能得到這個工作或更好的方式來做到這一點高度讚賞。謝謝!Swift - 代理協議結構
Delegate類
import Alamofire
protocol ServletDelegate {
func responseSuccess(sender: Servlet, respArray : [String])
func responseFail(sender: Servlet, respArray : [String])
}
class Servlet : UIViewController{
var delegate:ServletDelegate?
//form 'data' parameter
Alamofire.request(.POST, Config.flURL, parameters:["data" : ""]).responseData {
response in
print ("request \(response.request)")
print ("response \(response.response)")
print ("result \(response.result)")
print ("data \(response.data)")
let responseData = NSString (data: response.data!, encoding: NSUTF8StringEncoding)
result = (responseData?.componentsSeparatedByString("[email protected]"))!
print("responseData :\(responseData)");
print("result :\(result)");
self.delegate?.responseSuccess(self, respArray: result);
}
主類所有的servlet類的
class LoginViewController: Servlet, UITextFieldDelegate, ServletDelegate {
@IBAction func submitBtnAction(sender: UIButton) {
Servlet().LoginUserHttp(tfUsername.text!, userPassword: tfPassword.text!);
}
func responseSuccess(sender: Servlet, respArray: [String]) {
print("responseSuccess: \(respArray)");
}
func responseFail(sender: Servlet, respArray: [String]) {
print("responseFail: \(respArray)");
}
}
這裏有幾件事你做錯了。其中一個原因是因爲你沒有通過'LoginViewController'作爲'Servlet'中的委託。還要考慮讓你的協議確認類協議,這樣你的委託就不會被強引用(否則會阻止它被釋放)。 – Eendje
謝謝你指出。 –