Swift3 无法为类型为';[字符串:字符串]';索引类型为';NSUserInterfaceItemIdentifier';

Swift3 无法为类型为';[字符串:字符串]';索引类型为';NSUserInterfaceItemIdentifier';,swift3,swift4,macos-high-sierra,xcode9.1,Swift3,Swift4,Macos High Sierra,Xcode9.1,在我的项目(MacOS,Swift 4)中,当我试图设置NSTableViewDataSource时,出现以下错误:“无法使用'NSUserInterfaceItemIdentifier'类型的索引为'[String:String]'类型的值下标”它在Swift 3中工作正常,但当我将项目更新为Swift 4时,它停止工作 所以我要做的是,通过使用单元格id在“tableView”中显示“tableViewData” 这是我的代码: import Cocoa class Vie

在我的项目(MacOS,Swift 4)中,当我试图设置NSTableViewDataSource时,出现以下错误:“无法使用'NSUserInterfaceItemIdentifier'类型的索引为'[String:String]'类型的值下标”它在Swift 3中工作正常,但当我将项目更新为Swift 4时,它停止工作

所以我要做的是,通过使用单元格id在“tableView”中显示“tableViewData”

这是我的代码:

    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中发生了什么变化吗?

NSUserInterfaceItemIdentifier是一种结构类型。您应该调用以获取基础值:

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

提示:⌥-单击
identifier
查看Swift 4中的更改内容