Swift3 类型';任何';没有下标成员,请单击XPath

Swift3 类型';任何';没有下标成员,请单击XPath,swift3,xcode8,Swift3,Xcode8,我正在尝试从mysql数据库获取信息,我有以下代码。我曾尝试使用其他页面上的编辑,但我是编程新手,无法找出我做错了什么 func get(){ let url = URL(string: "http://192.168.157.134/Getdepartment.php") let data = try? Data(contentsOf: url!) values = try! JSONSerialization.jsonObject(with: data!, o

我正在尝试从mysql数据库获取信息,我有以下代码。我曾尝试使用其他页面上的编辑,但我是编程新手,无法找出我做错了什么

    func get(){
    let url = URL(string: "http://192.168.157.134/Getdepartment.php")
    let data = try? Data(contentsOf: url!)
    values = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSArray
    tableView.reloadData()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return values.count;
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SpecialCell
    let maindata = values[indexPath.row]
    cell.username.text = maindata["Username"] as? String
    cell.password.text = maindata["Password"] as? String
    cell.num.text = maindata["FavoriteNumber"] as? String
    cell.info.text = maindata["Info"] as? String
    return cell;

}

非常经常提到的基金会<代码> NSArray <代码>没有提供类型信息,因此它对快速编译器毫无帮助。

在Swift 3中,编译器必须知道所有下标对象的类型,否则会出错

要解决此问题,首先将数据源数组声明为包含Swift
字典的Swift
数组
。这让编译器——最终也是你——感到高兴

var values = [[String:Any]]()
如果所有字典值都是字符串,您甚至可以将
值声明为
[[String:String]]

其次,将反序列化行强制转换为相同类型:

values = try! JSONSerialization.jsonObject(with: data!, options: []) as! [[String:Any]]
PS:
mutableContainers
在Swift中无效,传递空的
选项

旁注:

即使在本地网络中,也不要通过
数据(contentsOf: