Php UIPickerView无法在Swift 3.0中获取数组输出
我有这些PHP文件,可以根据“dept”条件从数据库中获取数据 getDeptList.phpPhp 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
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()
}
}