原谅我对于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
谢谢你指出。 –