设置表视图的dataSource时,无法分配此表达式的结果

时间:2014-06-18 13:31:23

标签: cocoa swift

我想在我的Cocoa应用中使用NSTableView,因此我必须将表格视图的NSTableViewDataSource委托设置为self。但是,由于错误Cannot assign to the result of this expression,以下代码无法编译。

myTable.dataSource = self

我确实将myTable变量声明为:

@IBOutlet var myTable: NSTableView

另请注意,我正确声明我的AppDelegate符合NSTableViewDataSource协议。

上面两行有什么问题?

另外,我将表格视图声明为@IBOutlet var myTable: NSTableView是否正确?或者我应该将其定义为可选或隐式展开的可选变量?

2 个答案:

答案 0 :(得分:3)

看起来NSTableView尚未完全现代化。它的dataSource属性仍然是非正式的,仅作为访问器方法存在,而不是使用@property声明的属性。因此,Swift接口没有dataSource属性。它有方法dataSource()setDataSource()

所以,试试:

myTable.setDataSource(self)

答案 1 :(得分:0)

IBOutlet属性会自动变为弱隐式解包的最终设置为nil的选项。

您可以使用if let:

安全地直接访问该值
if let table = myTable{
    table.dataSource = self
}