非法 NSTableView 数据源
Posted
技术标签:
【中文标题】非法 NSTableView 数据源【英文标题】:Illegal NSTableView data source 【发布时间】: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
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:本教程是用 Swift 2 编写的。您的代码似乎是 Swift 3。
numberOfRowsInTableView
的签名错误。在 Swift 3 中是
func numberOfRows(in tableView: NSTableView) -> Int
return data.count
PS:最好在 Interface Builder 中连接委托和数据源,而不是在代码中。
【讨论】:
是的,我移植了大部分内容,但似乎总是忽略两者之间的细微差别。谢谢一堆!修复了它。以上是关于非法 NSTableView 数据源的主要内容,如果未能解决你的问题,请参考以下文章
遍历 NSTableview 或 NSArrayController 以获取数据