无法下标类型' [String:String]'索引类型' NSUserInterfaceItemIdentifier'

时间:2017-11-03 16:48:44

标签: swift3 swift4 macos-high-sierra xcode9.1

在我的项目中( 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中有哪些变化?

1 个答案:

答案 0 :(得分:5)

NSUserInterfaceItemIdentifier是一种结构类型。您应该致电.rawValue以获取基础值:

tableViewData[row][(tableColumn?.identifier.rawValue)!]