请原谅我对 Swift 还很陌生。我想创建一个用于“POST”请求并从服务器获取响应的委托。然后将从服务器返回的参数传递给 func 并允许我的主类做出相应的响应。下面是我的代表和我的主要课程。它没有打印 LoginViewController 类中的响应日志。我有点迷失了,不太知道哪里出了问题。非常感谢有关如何使其发挥作用或更好的方法的建议/指示。谢谢!
代表班
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("~z0@"))!
print("responseData :\(responseData)");
print("result :\(result)");
self.delegate?.responseSuccess(self, respArray: result);
}
主班
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)");
}
}
首先,您的 servlet 类不应该是 UIViewController,其次 - 不要使用 ;很快它是多余的,第三你没有设置委托,第四是委托应该很弱,这样你就不会遇到强引用循环,第五我没有看到传递发送者的理由
顺便说一句,您可能应该通过响应失败委托传递一些错误对象,但这取决于您
代表班
import Alamofire
protocol ServletDelegate: class {
func responseSuccess(respArray : [String])
func responseFail(respArray : [String])
}
class Servlet {
weak 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("~z0@"))!
print("responseData :\(responseData)")
print("result :\(result)")
self.delegate?.responseSuccess(respArray: result)
}
主班
class LoginViewController: UIViewController, UITextFieldDelegate, ServletDelegate {
let servlet = Servlet()
@IBAction func submitBtnAction(sender: UIButton) {
/// im guessing you know what you are doing here, because we dont see that LoginUserHttp in your Servlet code
servlet.LoginUserHttp(tfUsername.text!, userPassword: tfPassword.text!)
}
override func viewDidLoad() {
servlet.delegate = self
}
func responseSuccess(respArray: [String]) {
print("responseSuccess: \(respArray)")
}
func responseFail(respArray: [String]) {
print("responseFail: \(respArray)")
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)