【问题标题】:Illegal NSTableView data source非法 NSTableView 数据源
【发布时间】:2017-05-29 19:21:21
【问题描述】:

目前正在做一些快速开发并正在玩这个教程: https://www.brandpending.com/2016/01/14/using-core-data-in-a-swift-cocoa-app-to-populate-an-nstableview/

我已经更新了代码,因为上面的一些代码已经过时了,但是我越来越害怕了

***非法的NSTableView数据源

不确定是什么导致了问题,因为我没有在上述教程中创建的自定义内容之外链接我的 TableView 委托或数据源出口。我相信抛出错误的代码在某个地方的下面的函数中。否则一定有我遗漏的东西。

 override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    let appDelegate = NSApplication.shared().delegate as! AppDelegate
    managedContext = appDelegate.managedObjectContext

    tableView.delegate = self
    tableView.dataSource = self

    fetchDataAndRefreshTable()

}

//MARK: Table Stuff
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
    return data.count
}

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {

    let result = tableView.make(withIdentifier: tableColumn!.identifier, owner: self) as! NSTableCellView

    let item = data[row]

    if let val = item.value(forKey: tableColumn!.identifier) as? String {
        result.textField?.stringValue = val
    } else {
        result.textField?.stringValue = ""
    }
    return result
}

任何帮助将不胜感激!

【问题讨论】:

    标签: ios swift tableview datasource nstableview


    【解决方案1】:

    本教程是用 Swift 2 编写的。您的代码似乎是 Swift 3。

    numberOfRowsInTableView 的签名错误。在 Swift 3 中是

    func numberOfRows(in tableView: NSTableView) -> Int {
        return data.count
    }
    

    PS:最好在 Interface Builder 中连接委托和数据源,而不是在代码中。

    【讨论】:

    • 是的,我移植了大部分内容,但似乎总是忽略两者之间的细微差别。谢谢一堆!修复了它。
    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 2012-07-30
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多