如何以编程方式使用 NSArrayController 对 NSTableView 进行排序?

How to sort NSTableView with NSArrayController programmatically?

我有一个只有一列但子视图中有不同值的 NSTableView。 tableView 由绑定到 CoreData 实体的 NSArrayController 填充。 我想知道如何通过自定义按钮对 tableView 进行排序。

class ViewController: NSViewController {

   @IBOutlet var arrayController: NSArrayController!

   @IBAction func sortByName(_ sender: Any) {

       arrayController.sort... ?
   }

   @IBAction func sortByAge(_ sender: Any) {

       arrayController.sort... ?

   }

}

我知道如何让 NSArrayController 通过单击行 header 来对列进行排序。但由于我只有一列但值不同,我试图找到一种方法来按自定义按钮排序。 任何帮助将非常感激。

设置阵列控制器sortDescriptors属性并调用arrayController.rearrangeObjects()

class ViewController: NSViewController {

    @IBOutlet var arrayController: NSArrayController!

    @IBAction func sortByName(_ sender: Any) {
        sortArrayController(by: "name")
    }

    @IBAction func sortByAge(_ sender: Any) {
        sortArrayController(by: "age")
    }

    func sortArrayController(by key : String) {
        arrayController.sortDescriptors = [NSSortDescriptor(key: key, ascending: true)]
        arrayController.rearrangeObjects()
    }

}