【发布时间】:2019-03-18 17:29:22
【问题描述】:
如何将文本字段中的代码转换为 json 格式的数据。
以下是我当前的代码,但是当单击按钮时,它似乎不会将文本字段中的数据传输到 json。这段代码中是否有任何错误?
@IBAction func submitButton(_ sender: Any) {
// parse in paramaters
let parameters = ["Name": nameTextField, "Email": emailTextField, "DOB": dateTextField] as [String : Any]
guard let url = URL(string: "https://prod-69.westeurope.logic.azure.com/workflows/d2ec580e6805459893e498d43f292462/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=zn8yq-Xe3cOCDoRWTiLwDsUDXAwdGSNzxKL5OUHJPxo") else { return }
var request = URLRequest(url: url)
// let url session know that this is a post request
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
// convert paramaters to JSON
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
}.resume()
}
【问题讨论】:
-
你的意思是
nameTextField.text!等吗? -
我建议之后也使用
?? ""以避免因任何原因出现异常。 -
不要忽略错误。在
do/catch中将try?替换为try,这样您就知道问题所在了。 -
@KSigWyatt
UITextField的text属性确实是可选的,但实际上绝不是nil。