Swift:使用 Alamofire 从 MYSQL 获取 JSON 数组值

Swift: Get JSON array value from MYSQL using Alamofire

我正在开发一个系统项目。如何使用 Alamofire 显示从 MySQL 到 3 UILabel(1.nameLabel.text, 2.idnumberLabel.text, 3.statusLabel.text) 的 3 列值。

PHP代码xxxx.php:

 if ($_GET) {
        $idnumber = $_GET['idnumber'];

        // get a product from products table
        $stmt = $pdo->prepare("SELECT * FROM register WHERE idnumber = :idnumber");
        $stmt->execute(array(":idnumber" => $idnumber));
        $result = $stmt->fetch();

        if (!empty($result)) {
            // check for empty result
            if ($stmt->rowCount() > 0) {

                $user = array();
                $user["name"] = $result["name"];
                $user["idnumber"] = $result["idnumber"];
                $user["status"] = $result["status"];
                // success
                $response["success"] = 1;

                // user node
                $response["user"] = array();

                array_push($response["user"], $user);

                // echoing JSON response
                echo json_encode($response);
            } else {
                // no product found
                $response["success"] = 0;
                $response["error_message"] = "Not registered user";

                // echo no users JSON
                echo json_encode($response);
            }
        } else {
            // no product found
            $response["success"] = 0;
            $response["error_message"] = "No user found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // required field is missing
        $response["success"] = 0;
        $response["error_message"] = "Required field(s) is missing";

        // echoing JSON response
        echo json_encode($response);
    }

这是link通过id号查找用户http://localhost/xxxx.php/idnumber=? 我想使用 UITextfield 来执行 idnumber.

JSON编码

  {"success":1,"user":[{"name":"PETER JENSEN","idnumber":"35433332","status":"PROCESS"}]}

Swift代码:

 @IBAction func CheckUserStatusTapped(sender: UIButton) {
        var idnumber = self.idnumberTextField.text
        let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
        let parameters =
            ["idnumber": idnumber]

        //load and parse the JSON into an array
        Alamofire.request(.POST, "http://localhost/xxxx.php", parameters: parameters).responseJSON { (request, response, data, error) in

                 var name = jsonResult [0]["name"]
            var idnumber = jsonResult [0]["idnumber"]
            var status = jsonResult [0]["status"]

        }
    }

我试过了,但没有任何结果和错误。我不知道向 UILabel.Please 显示此值帮助我 :(。我很困惑。抱歉我的英语不好!

如果您检索到的 data 是正确的,此问题将说明您如何解析 JSON 响应。实际上,您的代码 jsonResult 从未声明过。

当您声明 var idnumber 并将其赋值 idnumberTextField.text 时,您正在制作存储在 idnumberTextField.text 的字符串的副本。当您稍后将其他内容分配给 idnumber 时,它不会对 idnumberTextField.text 执行任何操作。这是您想要发展的关于编程的关键理解。

CheckUserStatusTapped 范围内的 idnumber 声明也被响应处理程序中的 idnumber 声明隐藏。即使您没有这样做,分配给 idnumber 也不会更改 idnumberTextField.

上的 .text 属性

您需要修改 UILabel 对象本身以使其显示其他内容。

您也不希望从后台线程更新 UI。在您的响应处理程序中,您将要向主线程分派一个函数,如下所示:

dispatch_async(dispatch_get_main_queue()) {
    self.idnumberTextField.text = jsonResult[0]["idnumber"]
}