我在 MyViewController
中有一个 NSTableView
并绑定(bind)了一个数组 Controller 。我希望能够通过单击表格列标题对其进行排序,它也应该自动排序。因此,对于自动排序,我在 IB 中设置了数组 Controller 的排序描述符绑定(bind),如下所示:
Bind to: MyViewController
Model Key Path: customSortDescriptors
在我添加的 MyViewController 类中:
var customSortDescriptors:[NSSortDescriptor] {
let sd = NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:");
return [sd]
}
对于 IB 中的相关表格列,我设置了:
Sort Key: string
Selector: caseInsensitiveCompare:
这一切正常,直到我在出现错误的地方单击表列标题:
Error setting value for key path customSortDescriptors of object NSAutounbinder: 0x60000005e060 - a nonretaining proxy for MyApp.MyViewController: 0x6000000e6600 (from bound object NSArrayController: 0x6000001c0b40[entity: GeneratedData, number of selected objects: 0]): [MyApp.MyViewController 0x6000000e6600 setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key customSortDescriptors.
我不确定为什么会收到此错误。有人能告诉我哪里出了问题吗?为什么 MyViewController 不符合键值编码?默认情况下,NSViews 和 NSViewControllers 不是兼容的吗?
除此之外,排序工作没有问题,但我在 Xcode 中抛出错误并想消除它。
最佳答案
我会被诅咒,但错误的原因显然是该属性是只读的。所以添加一个 setter,或者更好的是,将代码简单地更改为:
var customSortDescriptors = [NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:")];
修复了错误,自动和手动排序都有效。
关于macos - NSTableView - 如何让自动排序和手动排序一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30814869/