Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.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
使用PHP响应存储/使用数据_Php_Ios_Arrays_Swift_Post - Fatal编程技术网

使用PHP响应存储/使用数据

使用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

我声明了一个函数来从一些文本字段(POST)发送信息,然后得到一个带有给定信息的响应。我还使用组件(separatedBy:String)获取包含每个字段信息的数组。我现在要做的是使用这些信息(来自数组的信息)来存储/使用它,这样我就可以在新视图中向用户显示保存的信息

我的Swift如下所示

      @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