I have a NSTableView
in MyViewController
and have an array controller bound to it. I want to be able to sort it by clicking the table column headers and it should also auto-sort. So for auto-sort I set the Sort Descriptors binding of my array controller in IB as following:
Bind to: MyViewController
Model Key Path: customSortDescriptors
In the MyViewController class I've added:
var customSortDescriptors:[NSSortDescriptor] {
let sd = NSSortDescriptor(key: "string", ascending: true, selector: "localizedStandardCompare:");
return [sd]
}
And for the related table column in IB I've set:
Sort Key: string
Selector: caseInsensitiveCompare:
This works OK until I click on the table column header upon where I get an error thrown:
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.
I'm not sure why I get this error. Can somebody tell me what is wrong? Why would MyViewController not be key value coding-compliant? Aren't NSViews and NSViewControllers compliant by default?
Besides that the sorting works without problems but I get the error thrown in Xcode and want to eliminate that.
I will be damned but the reason for the error is obviously that the property is read-only. So adding a setter, or better yet, change the code to simply:
fixed the error and both, automatic and manual sorting works.