非法 NSTableView 数据源
Illegal NSTableView data source
目前正在做一些 swift 开发并且正在玩这个教程:
https://www.brandpending.com/2016/01/14/using-core-data-in-a-swift-cocoa-app-to-populate-an-nstableview/
我已经更新了代码,因为上面的一些代码已经过时了,但是我得到了可怕的
*** Illegal NSTableView data source
不确定是什么导致了问题,因为我没有在上述教程中创建的自定义内容之外链接我的 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
}
如有任何帮助,我们将不胜感激!
教程写在Swift 2.你的代码好像是Swift 3.
numberOfRowsInTableView
的签名有误。在 Swift 3 中是
func numberOfRows(in tableView: NSTableView) -> Int {
return data.count
}
PS: 最好在 Interface Builder 中连接委托和数据源,而不是在代码中。
目前正在做一些 swift 开发并且正在玩这个教程: https://www.brandpending.com/2016/01/14/using-core-data-in-a-swift-cocoa-app-to-populate-an-nstableview/
我已经更新了代码,因为上面的一些代码已经过时了,但是我得到了可怕的
*** Illegal NSTableView data source
不确定是什么导致了问题,因为我没有在上述教程中创建的自定义内容之外链接我的 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
}
如有任何帮助,我们将不胜感激!
教程写在Swift 2.你的代码好像是Swift 3.
numberOfRowsInTableView
的签名有误。在 Swift 3 中是
func numberOfRows(in tableView: NSTableView) -> Int {
return data.count
}
PS: 最好在 Interface Builder 中连接委托和数据源,而不是在代码中。