簡體   English   中英

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

這是通過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顯示此值。請幫助我:(。我很困惑。對不起我的英語不好!

如果您檢索到的data正確,則此問題說明如何解析JSON響應。 您的代碼jsonResult從未聲明過。

Swift / PHP如何使用Alamofire在UITableView中顯示mysql數據(json)

當聲明var idnumber並將其分配給idnumberTextField.text時,您正在復制存儲在idnumberTextField.text的字符串的副本。 當您以后再為idnumber分配其他內容時,對idnumberTextField.text不會執行任何操作。 這是您將要開發的有關編程的關鍵理解。

您在響應處理程序中的idnumber聲明也遮蓋了CheckUserStatusTapped范圍內的idnumber聲明。 即使您沒有這樣做,分配給idnumber也不會更改idnumberTextField的.text屬性。

您需要修改UILabel對象本身以使其顯示其他內容。

您也不想從后台線程更新UI。 在您的響應處理程序中,您將需要像這樣將函數分派到主線程:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM