7

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

4

2 回答 2

7

根据 beta 6 发行说明,您必须(桥接)转换为AnyObject

cell.name.text = (maindata["name"] as AnyObject) as? String

或强制施放

cell.name.text = maindata["name"] as! String

这是更喜欢具有不同属性类型的自定义类/结构而不是普通字典的另一个原因。

于 2016-08-18T14:18:13.950 回答
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 跳起来聊天以帮助我理解他的回答,这在技术上是正确的

于 2016-08-18T15:11:35.317 回答