如何使用自定义类数据对NSTableView进行排序

时间:2017-02-23 14:53:57

标签: cocoa nstableview

我使用基于单元格的tableview来存储自定义类数据,例如

class Person {
    var name:String = ""
    var age: Int = 0
}

然后使用NSMUtableArray收集person1,person2 ...数据,将其称为dataArray。

在column1上显示人名,在column2上显示年龄,工作正常且可编辑。

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
    if tableColumn?.identifier == "Name"
    {
        return (self.dataArray[row] as! Person).name
    }
    else if tableColumn?.identifier == "Age"
    {
        return (self.dataArray[row] as! Person).age
    }

} 

如何使用受尊重的sortDescriptor对每列进行排序?

我遵循fefernce" sortDescriptorWithKey:tableColumn.identifier" 总是在我的代码中失败,如果将tableColumn.identifier设置为"自我" ,它也使我感到困惑。

以下是我的其他代码片段。

func tableView(_ tableView: NSTableView, sortDescriptorsDidChange oldDescriptors: [NSSortDescriptor]) {
    let newDescriptors = tableView.sortDescriptors
    dataArray.sort(using: newDescriptors)
    tableView.reloadData()
}

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self

    // Sort
    for tableColumn in tableView.tableColumns {
        let sortDescrptor = NSSortDescriptor.init(key: tableColumn.identifier, ascending: true, selector: #selector(NSString.caseInsensitiveCompare))
        tableColumn.sortDescriptorPrototype = sortDescrptor
    }

}

0 个答案:

没有答案