macos - Swift 3 中 tableView 函数的正确语法是什么? xCode 8 问题

标签 macos nstableview swift3 xcode8

我刚刚升级到 xCode 版本 8.0 (8A218a)。我一直在尝试将一些较旧的代码转换为 Swift 3.0,并且我很难理解如何解决 tableView 的一些问题,并且我对文档和遇到的一些错误感到困惑。

我收到此错误

*** Illegal NSTableView data source (). Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row:

运行此代码时:

class listMusicEvents: ViewController, performanceDataModelDelegate, NSTableViewDelegate, NSTableViewDataSource {

let eventModel = performanceDataModel.sharedInstance
var musicEvents:[performanceEvent] = []


@IBOutlet var tableView: NSTableView!


override func viewDidLoad() {
    super.viewDidLoad()
    eventModel.delegate = self
    tableView.delegate = self
    eventModel.getPerformanceEvents()
}

func performanceEventsLoaded() {

    musicEvents = eventModel.eventList
    print(musicEvents[0].eventTitle)
}

func performanceSaveError(headline: String, message: String, error: NSError) {
    print(error)
}

func numberOfRowsInTableView( in tableView: NSTableView) -> Int {
    return musicEvents.count
}

func tableView(_tableView:NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> AnyObject{

    if tableColumn?.title == "Date" {
        let date = musicEvents[row].eventDate
        return date as AnyObject

    } else {

        let title = musicEvents[row].eventTitle
        return title as AnyObject
    }

}

}

我以为我已经实现了新方法,但看起来我不理解一些基本的东西。

我收到有关 objectValueFor 函数的警告:

Instance method 'tableView(tableView:objectValueForRow:row:)' nearly matches optional requirement 'tableView(:setObjectValue:for:row:) of protocol 'NSTableViewDataSource'

我查看了委托(delegate)文档,他们说 setObjectValue 不应该用于基于 View 的 tableView,这就是我所拥有的(我认为)。

我最初用于表列的代码是:

tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? { . . .

在将项目引入 xCode 8 之前,这条线运行良好

有人可以解释一下基于 View 的 tableViews 应该如何与 Swift 3 一起使用以及我犯了什么错误吗?非常感谢任何帮助。

最佳答案

重新启动计算机消除了非法的 NSTableView 数据源。我猜 xCode 8 已经进入了无法摆脱错误的状态。

自动完成提供的 objectValueFor 函数是正确的。

关于macos - Swift 3 中 tableView 函数的正确语法是什么? xCode 8 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39454522/

相关文章:

objective-c - 如何禁用 NSTableVIew 中的排序?

cocoa - SplitView 未正确调整 subview 中 NSTableView 的大小

ios - 让 UITextView 的键盘消失,同时保持返回功能

macos - 如何为 Mac OS X 创建 Windows 服务?

cocoa - NSScrollView 中的自动布局约束

java - 为什么我的 JVM 会进行一些运行时循环优化并使我的代码出现错误?

swift - Xcode 8 中没有 IOS 10 模拟器

ios - 如何在 Alamofire 4 和 Swift 3 中设置方法、 header 、参数

macos - 守护进程与 cocoa

c++ - 使用CUDA convnet库编译错误