在我的项目中( MacOS,Swift 4 ),我收到此错误:"无法下标类型' [String:String]'索引类型' NSUserInterfaceItemIdentifier'"当我试图设置NSTableViewDataSource时。 它在Swift 3中工作得很好,但当我将项目更新到Swift 4时,它停止了工作。
所以我试图做的是显示" tableViewData"在" tableView"通过使用单元格ID。
这是我的代码:
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var tableView:NSTableView!
let tableViewData = [["picID":"default","nameID":"default","amount":"1","address":"default"],["picID":"default","nameID":"default","amount":"1","address":"default"]]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self as? NSTableViewDelegate
self.tableView.dataSource = self
}
}
extension ViewController:NSTableViewDataSource{
func numberOfRows(in tableView: NSTableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return tableViewData[row][(tableColumn?.identifier)!] // This is where the error appears
}
}
知道Swift 4中有哪些变化?
答案 0 :(得分:5)
NSUserInterfaceItemIdentifier
是一种结构类型。您应该致电.rawValue
以获取基础值:
tableViewData[row][(tableColumn?.identifier.rawValue)!]