如何在XCode 8 Swift 3中将文本字段值作为String类型传递? [英] How to pass textfield value as String type in xcode 8 swift 3?

查看:140
本文介绍了如何在XCode 8 Swift 3中将文本字段值作为String类型传递?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图了解xcode 8 swift 3中的发布请求过程.

I'm trying to understand the process of post request in xcode 8 swift 3.

我设法通过向"paramString"中添加值来手动发布数据.

我的问题是,如果输入数据来自文本字段,如何传递数据?

我将其命名为 usernameTxt passwordTxt .如何使用下面的代码将这些值传递给PHP MySQL?

I named it usernameTxt and passwordTxt. How to pass these value into PHP MySQL using the code below?

如果视图控制器在Web服务中输入了多个文本字段,"paramString" 将是什么?

What would "paramString" will be if the view controller have multiple textfield input into web services?

到目前为止我的代码

import UIKit
class ViewController: UIViewController {

    @IBOutlet var usernameTxt: UITextField!
    @IBOutlet var passwordTxt: UITextField!
    @IBOutlet var loginButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func sendData(_ sender: Any) {
        data_request("http://localhost/send.php")
    }
    func data_request(_ url:String)
    {
        let name   = usernameTxt.text
        let pass   = passwordTxt.text

        let url:NSURL       = NSURL(string: url)!
        let session         = URLSession.shared

        let request         = NSMutableURLRequest(url: url as URL)
        request.httpMethod  = "POST"

        let paramString     = "data=" + name! 
        // let paramString  = "data=" + name! + "data2=" + pass! //this line does not work 
        request.httpBody    = paramString.data(using: String.Encoding.utf8)

        let task = session.dataTask(with: request as URLRequest){
            (data, response, error) in

            guard let _:NSData = data as NSData?, let _:URLResponse = response, error == nil else {
                print("Error")
                return
            }

            if let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue){
                print(dataString)
            }
        }
        task.resume()
    }
}

推荐答案

POST请求的参数字符串必须采用格式

A parameter string for a POST request must be in format

key1=value&key2=value2

创建字符串的便捷方法是字符串插值

A convenient way to create the string is String Interpolation

let paramString = "data=\(name)&data2=\(pass)"

检查text属性是否不是nil并且不为空是一种良好的编程习惯.在Swift 3中进一步使用本机结构URLURLRequest.

It's good programming habit to check if the text properties are not nil and not empty. Further in Swift 3 use the native structs URL and URLRequest.

顺便说一下,Swift不是PHP.命名约定是使用驼峰式大小写.

By the way Swift is not PHP. The naming convention is to use camel case.

...
@IBAction func sendData(_ sender: AnyObject) {
    dataRequest("http://localhost/send.php")
}

func dataRequest(_ url:String)
{
    guard let name = usernameTxt.text, !name.isEmpty,
        let pass = passwordTxt.text, !pass.isEmpty else { return }

    let url = URL(string: url)!
    let session = URLSession.shared

    var request = URLRequest(url: url)
    request.httpMethod = "POST"

    let paramString = "data=\(name)&data2=\(pass)"
    request.httpBody = paramString.data(using: .utf8)

    let task = session.dataTask(with: request) { (data, response, error) in

        guard error == nil else {
            print("Error: ", error!)
            return
        }

        if let dataString = String(data: data!, encoding: .utf8) {
            print(dataString)
        }
    }
    task.resume()
}

这篇关于如何在XCode 8 Swift 3中将文本字段值作为String类型传递?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆