必须实施 numberOfItemsInComboBox: 和 comboBox:objectValueForItemAtIndex:

Must implement numberOfItemsInComboBox: and comboBox:objectValueForItemAtIndex:

我在使用 Swift 4.2 的 XCode 项目中不断收到此错误。我正在创建 Mac OS Cocoa 应用程序并有一个绑定到数据源的简单组合框。有什么想法吗?

 func numberOfItemsInComboBox(aComboBox: NSComboBox) -> Int {
        return weatherCitiesArray.count
    }

    func comboBox(aComboBox: NSComboBox, objectValueForItemAtIndex index: Int) -> Any? {

        if index == -1
        {
            print("recieved -1")
            return weatherCitiesArray[0]
        }

        return weatherCitiesArray[index] as AnyObject

    }

上面的方法定义有什么问题?

问题是您的方法签名与 NSComboBoxDataSource 协议要求的不匹配,您可以找到 here。要解决这些错误,请确保您的函数签名与协议匹配。您的代码最终看起来像这样:

func numberOfItems(in comboBox: NSComboBox) -> Int {
    return weatherCitiesArray.count
}

func comboBox(_ comboBox: NSComboBox, objectValueForItemAt index: Int) -> Any? {
    if index == -1
    {
        print("recieved -1")
        return weatherCitiesArray[0]
    }

    return weatherCitiesArray[index] as AnyObject
}