Xcode beta 6已经改变了一些Swift语言
由于' id '现在导入为' Any '而不是' AnyObject ',您可能会在之前对' AnyObject '执行动态查找时看到错误。
我已经尝试修复在进行动态查找之前显式转换为AnyObject,或强制转换为特定对象类型
但我不确定我做的是正确的-有人可以帮助请这里是原始的工作代码从Beta 5
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SpecialCell
let maindata = values[(indexPath as NSIndexPath).row]
cell.name.text = maindata["name"] as? String
cell.id.text = maindata["id"] as? String
//team_id.text = maindata["team_id"] as? String
return cell
}
https://www.dropbox.com/s/ln0vx3b9rbywv83/screen%20shot%202016 - 08 - 18% - 20 at%2014.32.23.png?dl=0
根据beta 6发布说明,您必须(桥接)转换到AnyObject
cell.name.text = (maindata["name"] as AnyObject) as? String
或强制转换
cell.name.text = maindata["name"] as! String
这是更喜欢具有不同属性类型的自定义类/结构而不是普通字典的另一个原因。
我需要改变我的方法并放弃NSMutableArray(我很高兴)
所以我声明空数组如下
var values = [[String:AnyObject]]()
然后像这样弹出数据
values = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String : AnyObject]];
另一个小调整
let maindata = values[(indexPath).row]
工作完成-感谢@vadian跳下来聊天,帮助我理解他的答案,这在技术上是正确的