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

时间:2017-05-18 02:26:12

标签: php ios arrays swift post

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

My 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]的名字,但我不知道的是,如何保存数据并通过以下方式显示给用户labels(label.text =数组中的值)。

1 个答案:

答案 0 :(得分:0)

您可以轻松地将响应字符串保存到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字典,并将其解析为模型(如User类)。然后访问像self.phoneNumberLabel.text = user.phoneNumber

这样的数据会非常方便