Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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 UIPickerView无法在Swift 3.0中获取数组输出_Php_Ios_Arrays_Swift3_Xcode8 - Fatal编程技术网

Php UIPickerView无法在Swift 3.0中获取数组输出

Php UIPickerView无法在Swift 3.0中获取数组输出,php,ios,arrays,swift3,xcode8,Php,Ios,Arrays,Swift3,Xcode8,我有这些PHP文件,可以根据“dept”条件从数据库中获取数据 getDeptList.php <?php if (isset($_POST['dept'])){ $dept = $_POST['dept']; $sql = "SELECT * FROM users WHERE dept ='$dept'"; $result = mysqli_query($connect, $sql); if ($

我有这些PHP文件,可以根据“dept”条件从数据库中获取数据

getDeptList.php

<?php
    if (isset($_POST['dept'])){
        $dept       = $_POST['dept'];

        $sql   = "SELECT * FROM users WHERE dept ='$dept'";
        $result = mysqli_query($connect, $sql);

        if ($result && mysqli_num_rows($result) > 0){
            while ($row = mysqli_fetch_array($result)) {

                $login_db       = $row['login'];
                $real_namedb    = $row['real_name'];

                $output[]= array('login' => $login_db, 'real_name' => $real_namedb);

            }

            echo json_encode($output);
        mysqli_free_result($result);
        }
        else {
            $output = array('login' => 'wrong credentials from PHP code!');
            echo json_encode($output);
            echo mysqli_error($connect);
        }
    }
?>
控制台没有打印结果值

问题是,UIPickerView无法获取数组输出。我不知道为什么。也许有人能帮助解决这个问题


谢谢。

self.persons=array.flatMap(Person.init)将断点放在这一行中,检查是否获得数据?是否有任何错误?@AlotJai打印(数组)?@AlotJai的控制台日志是什么?
如果让结果=尝试,请添加这样的行
?JSONSerialization.jsonObject(with:data,options:[]){print(result)}
在显示控制台日志以获取结果之后,不要将此代码放入if-let数组块中。可以将url与https一起使用吗?
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {

    @IBOutlet var deptLbl: UILabel!
    @IBOutlet var loginLbl: UILabel!
    @IBOutlet var real_nameLbl: UILabel!
    @IBOutlet var dropdownTxt: UITextField!
    @IBOutlet var dropdown: UIPickerView!

    var persons = [Person]()

    struct Person {
        var login: String
        var real_name: String

        init?(dict: [String:Any]) {
            guard let login = dict["login"] as? String, let real_name = dict["real_name"] as? String else {
                return nil
            }
            self.login = login
            self.real_name = real_name
        }
    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return self.persons.count
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return persons[row].real_name
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if row >= self.persons.count {
            return
        }
        self.loginLbl.text = self.persons[row].login
        self.real_nameLbl.text = self.persons[row].real_name
        self.dropdown.isHidden = true
        self.dropdownTxt.resignFirstResponder()
    }
    func textFieldDidBeginEditing(_ textField: UITextField) {
        if textField == self.dropdownTxt {
            self.dropdown.isHidden = false
        }
    }

    func getDropdownJSON(){
        deptLbl.text = "ITD"
        var request = URLRequest(url: URL(string: "http://localhost/getDeptList.php")!)
        request.httpMethod = "POST"
        let postString = "dept=\(deptLbl.text!)"
        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            guard let data = data, error == nil else {
                print("error=\(error)")
                return
            }
            if let result = try? JSONSerialization.jsonObject(with: data, options: []) {
                print(result)
            }
        }
        task.resume()
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        getDropdownJSON()
    }
}