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%20at%2014.32.23.png?dl=0
答案 0 :(得分:7)
根据beta 6发行说明,您必须(桥接)强制转换为AnyObject
cell.name.text = (maindata["name"] as AnyObject) as? String
或强制投射
cell.name.text = maindata["name"] as! String
这是使用不同属性类型而不是常见词典的自定义类/结构的另一个原因。
答案 1 :(得分:0)
我需要对我的方法进行更改并抛弃NSMutableArray(我很高兴)
所以我声明空数组如下
var values = [[String:AnyObject]]()
并将数据弹出,就像现在一样
values = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String : AnyObject]];
另一个小调整
let maindata = values[(indexPath).row]
完成工作 - 感谢@vadian跳转聊天,以帮助我理解他在技术上正确的答案