Кто-нибудь может дать разъяснение, почему мой код выбрасывает индекс вне диапазона, когда я пытаюсь добавить элемент в этот массив?Другие ответы в Интернете основаны на ситуации и не дают хорошего понимания того, как исправить ошибку.
Вот код для добавления в массив -
@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]]?
Может ли это быть проблемой?