【问题标题】:Swift: Get JSON array value from MYSQL using AlamofireSwift:使用 Alamofire 从 MYSQL 获取 JSON 数组值
【发布时间】:2015-09-26 14:11:25
【问题描述】:

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

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);
    }

这是通过 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 显示这个值。请帮助我:(。我很困惑。对不起我的英语不好!

【问题讨论】:

    标签: php ios swift alamofire


    【解决方案1】:

    当您声明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"]
    }
    

    【讨论】:

    • 我应该怎么做 idnumberTextField.text 使它成为一个字符串?我需要修改 UILabel 对象以使其显示其他内容是什么意思?
    • 像我在示例中所做的那样,将所需的字符串值分配给 idnumberTextField。
    【解决方案2】:

    如果您检索到的data 是正确的,此问题将显示您如何解析 JSON 响应。 Infact 在您的代码中 jsonResult 从未声明过。

    Swift/PHP How to display mysql data (json) in UITableView using Alamofire

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多