2

在我的项目(MacOS,Swift 4)中,当我尝试设置 NSTableViewDataSource. 它在 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 中发生了什么变化吗?

4

1 回答 1

5

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

tableViewData[row][(tableColumn?.identifier.rawValue)!]
于 2017-11-03T16:50:59.383 回答