Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-UIButton事件后将字段设置为Null_Ios_Uibutton - Fatal编程技术网

Ios Swift-UIButton事件后将字段设置为Null

Ios Swift-UIButton事件后将字段设置为Null,ios,uibutton,Ios,Uibutton,我有一个UIButton操作,它根据4个文本字段中的值将数据发送到PHP脚本。提交表单后,字段应重置为空。但是,我在设置字段时遇到问题。这是我的代码-设置null的变量是脚本底部的用户名、密码、名称和电子邮件。感谢您的帮助: @IBOutlet weak var txtUsername: UITextField! @IBOutlet weak var txtPassword: UITextField! @IBOutlet weak var txtName: UITextF

我有一个UIButton操作,它根据4个文本字段中的值将数据发送到PHP脚本。提交表单后,字段应重置为空。但是,我在设置字段时遇到问题。这是我的代码-设置null的变量是脚本底部的用户名、密码、名称和电子邮件。感谢您的帮助:

    @IBOutlet weak var txtUsername: UITextField!
    @IBOutlet weak var txtPassword: UITextField!
    @IBOutlet weak var txtName: UITextField!
    @IBOutlet weak var txtEmailAddress: UITextField!

    @IBAction func btnSubmit(sender: UIButton) {
        //Fields from app.
        var username = txtUsername.text
        var password = txtPassword.text
        var name = txtName.text
        var email = txtEmailAddress.text

        let myUrl = NSURL(string: "http://localhost/phpPost/demo.php");
        let request = NSMutableURLRequest(URL: myUrl!);
        request.HTTPMethod = "POST";

        let postString = "username=" + username + "&password=" + password + "&name=" + name + "&email=" + email;

        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in
            if error != nil {
                println("error=\(error)")
                return
            }
            println("******response = \(response)")

            // Print out response body
            let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
            println("****response data=\(responseString)")

            //Convert response sent from a server side script to a NSDictionary object:
            var err: NSError?
            var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary

            if let parseJSON = myJSON {
                var name = parseJSON["name"] as? String
                println("name: \(name)")
            }

            username = ""
            password = ""
            name = ""
            email = ""
        }

        task.resume()
    }

不要将字符串值设置为null或空字符串或任何内容,请设置
UITextField
属性的
text
值:

txtUsername.text = ""
txtPassword.text = ""
txtName.text = ""
txtEmailAddress.text = ""

更改
username
只会更改作用域为当前函数的字符串,它与其值来源的文本字段不再有任何关系。因此,更改其值对文本字段没有任何影响。

您没有对文本字段进行任何更改,它应该是这样的。您需要直接访问文本字段。您现在要做的是复制字符串并对其进行更改

@IBOutlet weak var txtUsername: UITextField!
@IBOutlet weak var txtPassword: UITextField!
@IBOutlet weak var txtName: UITextField!
@IBOutlet weak var txtEmailAddress: UITextField!

@IBAction func btnSubmit(sender: UIButton) {

    let myUrl = NSURL(string: "http://localhost/phpPost/demo.php");
    let request = NSMutableURLRequest(URL: myUrl!);
    request.HTTPMethod = "POST";

    let postString = "username=" + username + "&password=" + password + "&name=" + name + "&email=" + email;

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in
        if error != nil {
            println("error=\(error)")
            return
        }
        println("******response = \(response)")

        // Print out response body
        let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("****response data=\(responseString)")

        //Convert response sent from a server side script to a NSDictionary object:
        var err: NSError?
        var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary

        if let parseJSON = myJSON {
            var name = parseJSON["name"] as? String
            println("name: \(name)")
        }

        self.txtUsername.text = ""
        self.txtPassword.text = ""
        self.txtName.text = ""
        self.txtEmailAddress.text = ""
    }

    task.resume()
}
如果无论发生什么情况都需要清除文本字段,可以将set文本字段移出块。因为块是在响应之后异步调用的

@IBOutlet weak var txtUsername: UITextField!
@IBOutlet weak var txtPassword: UITextField!
@IBOutlet weak var txtName: UITextField!
@IBOutlet weak var txtEmailAddress: UITextField!

@IBAction func btnSubmit(sender: UIButton) {

    let myUrl = NSURL(string: "http://localhost/phpPost/demo.php");
    let request = NSMutableURLRequest(URL: myUrl!);
    request.HTTPMethod = "POST";

    let postString = "username=" + username + "&password=" + password + "&name=" + name + "&email=" + email;

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in
        if error != nil {
            println("error=\(error)")
            return
        }
        println("******response = \(response)")

        // Print out response body
        let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("****response data=\(responseString)")

        //Convert response sent from a server side script to a NSDictionary object:
        var err: NSError?
        var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary

        if let parseJSON = myJSON {
            var name = parseJSON["name"] as? String
            println("name: \(name)")
        }
    }

    self.txtUsername.text = ""
    self.txtPassword.text = ""
    self.txtName.text = ""
    self.txtEmailAddress.text = ""
    task.resume()
}

我很感激杰森。另一个问题是task.resume()方法下面的字段需要设置为“”。您的意思是,无论响应是否成功,您都需要清除这些文本字段吗?是的,正是这样。然后您需要将设置文本字段命令从块中删除。你能核对一下上面的答案吗?:)