我已将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
给我任何建议如何解决这个问题
答案 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桥接,他们缺乏类型信息。