NSTableView - 如何让自动排序和手动排序一起工作?
NSTableView - how to get automatic and manual sorting working together?
我在 MyViewController
中有一个 NSTableView
并绑定了一个数组控制器。我希望能够通过单击 table 列 header 对其进行排序,它也应该 auto-sort。因此,对于 auto-sort,我在 IB 中设置数组控制器的排序描述符绑定如下:
Bind to: MyViewController
Model Key Path: customSortDescriptors
在 MyViewController class 我添加了:
var customSortDescriptors:[NSSortDescriptor] {
let sd = NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:");
return [sd]
}
对于 IB 中的相关 table 列,我设置了:
Sort Key: string
Selector: caseInsensitiveCompare:
这工作正常,直到我点击 table 列 header 我收到错误消息的地方:
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 不是键值 coding-compliant?默认情况下,NSViews 和 NSViewControllers 不是兼容的吗?
除此之外,排序没有问题,但我在 Xcode 中收到错误并想消除它。
我会被诅咒,但错误的原因显然是 属性 是只读的。所以添加一个 setter,或者更好的是,将代码简单地更改为:
var customSortDescriptors = [NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:")];
修复了错误,自动和手动排序都有效。
我在 MyViewController
中有一个 NSTableView
并绑定了一个数组控制器。我希望能够通过单击 table 列 header 对其进行排序,它也应该 auto-sort。因此,对于 auto-sort,我在 IB 中设置数组控制器的排序描述符绑定如下:
Bind to: MyViewController
Model Key Path: customSortDescriptors
在 MyViewController class 我添加了:
var customSortDescriptors:[NSSortDescriptor] {
let sd = NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:");
return [sd]
}
对于 IB 中的相关 table 列,我设置了:
Sort Key: string
Selector: caseInsensitiveCompare:
这工作正常,直到我点击 table 列 header 我收到错误消息的地方:
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 不是键值 coding-compliant?默认情况下,NSViews 和 NSViewControllers 不是兼容的吗?
除此之外,排序没有问题,但我在 Xcode 中收到错误并想消除它。
我会被诅咒,但错误的原因显然是 属性 是只读的。所以添加一个 setter,或者更好的是,将代码简单地更改为:
var customSortDescriptors = [NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:")];
修复了错误,自动和手动排序都有效。