关于成员'下标'swift3的模糊引用问题

时间:2016-09-21 06:12:03

标签: swift swift3 ios10 xcode8

我已将swift 2.3升级到swift 3,我收到此错误

  

对成员'下标'swift3

的模糊引用

这里是代码

var cellDescriptors: [[String:Any]]!

    func loadCellDescriptors() {
    if let path = Bundle.main.path(forResource: "ProfileDescriptor", ofType: "plist") {
        cellDescriptors = NSMutableArray(contentsOfFile: path)
        getIndicesOfVisibleRows()



        tableView.reloadData()
    }
}


if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpanded"] as! Bool == false {
            shouldExpandAndShowSubRows = true
        }

我在这一行出错了

if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpanded"] as! Bool == false

给我任何建议如何解决这个问题

1 个答案:

答案 0 :(得分:1)

您不能在不告诉编译器中间类型

的情况下在Swift 3中使用订阅链
let section = cellDescriptors[indexPath.section] as! [Any]
let rowItem = section[indexOfTappedRow] as! [String:Any]
if rowItem["isExpanded"] as! Bool == false {
        shouldExpandAndShowSubRows = true
}

和往常一样,除非你绝对没有选择,否则永远不要在Swift中使用可变的Foundation集合类型NSMutableArray/Dictionary。他们无法与Swift桥接,他们缺乏类型信息。