使用PHP响应存储/使用数据
我声明了一个函数来从一些文本字段(POST)发送信息,然后得到一个带有给定信息的响应。我还使用组件(separatedBy:String)获取包含每个字段信息的数组。我现在要做的是使用这些信息(来自数组的信息)来存储/使用它,这样我就可以在新视图中向用户显示保存的信息 我的Swift如下所示使用PHP响应存储/使用数据,php,ios,arrays,swift,post,Php,Ios,Arrays,Swift,Post,我声明了一个函数来从一些文本字段(POST)发送信息,然后得到一个带有给定信息的响应。我还使用组件(separatedBy:String)获取包含每个字段信息的数组。我现在要做的是使用这些信息(来自数组的信息)来存储/使用它,这样我就可以在新视图中向用户显示保存的信息 我的Swift如下所示 @IBAction func enviarInfo(_ sender: Any) { let request = NSMutableURLRequest(url: NSURL(str
@IBAction func enviarInfo(_ sender: Any) {
let request = NSMutableURLRequest(url: NSURL(string: "http://www.mydomain/index.php")! as URL)
request.httpMethod = "POST"
//The String with the vars that will be sent to the $_POST["var"]
let postString = "nombre=\(nombreText.text!)&aPaterno=\(apaternoText.text!)&aMaterno=\(amaternoText.text!)&genero=\(genero.text! &email=\(emailText.text!)&telefono=\(telefonoText.text!)"
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
if error != nil {
print("error=\(String(describing: error))")
return
}
print("response = \(String(describing: response))")
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(String(describing: responseString))")
//Use a split method to get relevant information only
let string: String = responseString! as String
var str = string.components(separatedBy: "@@")
let resultadoUno = str[1]
var str2 = resultadoUno.components(separatedBy: ">>")
let resultadoDos = str2[0]
var str3 = resultadoDos.components(separatedBy: ";")
}
task.resume()
}
例如,如果我打印str3[5],我会得到电话号码或带有str3[0]的姓名,但我不知道的是,如何保存数据并通过标签(label.text=数组中的值)将其显示给用户。您可以轻松地将响应字符串保存为UserDefaults,然后恢复并在以后使用它们 首先,将类级别常量定义为UserDefaults键:
let key = "responseString"
第二,保存字符串:
UserDefaults.standard.set(responseString, forKey: key)
UserDefaults.standard.synchronize()
在需要时恢复并使用它:
guard let repsonseString = UserDefaults.standard.object(forKey: key) as? String else {
return
}
var strArray = repsonseString.components(separatedBy: "@@")
if strArray.count > 0 {
let str2 = strArray[0].components(separatedBy: ">>")
// do something with str2
}
if strArray.count > 1 {
let str3 = strArray[1].components(separatedBy: ";")
if str3.count > 5 {
self.phoneLabel.text = str3[5]
}
}
更好的做法是PHP返回字典而不是数组,如:
{
phoneNumber:123456789,
userName:"Joy"
}
您可以在iOS上获得响应,将JSON字典转换为Swift字典,并将其解析为一个模型(如用户类)。然后访问如下数据将非常方便:self.phoneNumberLabel.text=user.phoneNumber