任何人都可以澄清为什么我的代码在尝试向该数组添加项目时抛出索引超出范围吗?网络上的其他答案是基于情境的,并不能很好地理解如何纠正错误。
这是添加到数组的代码 -
@IBAction func refreshData(_ sender: Any) {
let type = "type"
let cost = dataAdded.shared.cost
let details = dataAdded.shared.details
let count = data?.count
(data!)[count! + 1] = [
"type" : type,
"details" : details,
"cost" : cost
] as! [String : String]
self.tableView.reloadData()
}
}
这是生成 TableView 的代码 -
func numberOfRows(in tableView: NSTableView) -> Int {
return (data?.count)!
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
let item = (data!)[row]
let cell = tableView.makeView(withIdentifier: (tableColumn!.identifier), owner: self) as? NSTableCellView
cell?.textField?.stringValue = item[(tableColumn?.identifier.rawValue)!]!
return cell
}
数组是这样声明的——
var data: [[String: String]]?
这会是个问题吗?
最佳答案
您需要初始化数组,因为您当前的声明为 nil
var data = [[String: String]]()
并附加到数组,最好有一个
struct Item {
let type:String
let details:String
let cost:String
}
var data = [Item]()
data.append(Item(type: type, details: details, cost: cost))
关于swift - fatal error : Index out of range when updating data source of table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650080/