如何在允许多选的NSTableView中获取选定的行数据?

Ani*_*ary 0 macos cocoa nstableview swift

我有一个NSTableView,其中允许多个选择。现在,当用户选择多行并单击一个Button时,我需要获取所有选定的行值。请帮忙!

为了获取单行数据,我使用以下代码

    var row = tableViewOutlet.selectedRow
    var column = tableViewOutlet.tableColumnWithIdentifier("EmpName")
    var cell: AnyObject? = column?.dataCellForRow(row)
    println("Cell Value - \(cell!.stringValue)")
Run Code Online (Sandbox Code Playgroud)

但是我想要一个循环中的多行

我写的代码如下

for (var i = 0; i < tableViewOutlet.numberOfSelectedRows; ++i) {

            if(tableViewOutlet.isRowSelected(i))
            {
                var row = tableViewOutlet.selectedRow
                var column = tableViewOutlet.tableColumnWithIdentifier("EmpName")
                var cell: AnyObject? = column?.dataCellForRow(row)
                println("Selected Emp Name - \(cell!.stringValue)")
            }
       }
Run Code Online (Sandbox Code Playgroud)

但是它只给我最后选择的行值。告诉我我要去哪里错了。

vad*_*ian 5

有一个API误解:

numberOfSelectedRows 返回选择的行数。

使用selectedRowIndexes它返回一个NSIndexSet包含所选行的索引的实例

您可以使用以下方法枚举索引集

斯威夫特1.2

for (_, index) in enumerate(tableViewOutlet.selectedRowIndexes)
{

}
Run Code Online (Sandbox Code Playgroud)

迅捷2

for (_, index) in tableViewOutlet.selectedRowIndexes.enumerate() {}
Run Code Online (Sandbox Code Playgroud)

迅捷3+

for (_, index) in tableViewOutlet.selectedRowIndexes.enumerated() {}
Run Code Online (Sandbox Code Playgroud)

但是我将从表视图数据源而不是从表格单元中检索数据