Edit AllPages

In a bindings-enabled table view I have a column of NSImageCells. I naively bound this column to an NSImage key in the model object that supports the table. Of course, when I click in the column header cell, the array controller attempts to sort the table based on that key and the app emits this error:

2005-03-04 17:23:27.266 SomeApp[7646] *** -[NSImage compare:]: selector not recognized

This behavior is simply unacceptable. Not to mention, embarrassing. After puzzling about this for awhile, I can think of several ways to overcome this

*1) Somehow disable the sorting action transmitted by the header cell *2) Implement an NSImage subclass that overrides compare: to do something reasonable *3) Abandon the lovely image cells for stark, easily sortable text. This would be sad.

(1) seems easiest to me - that is, if it is possible at all. What else has been tried when solving this problem?

I’m onto and looked through it for the answers, but it does not address this issue.

I think this is more of a sorting problem, rather than an image problem. You can add a custom sort descriptor to your array controller to handle images and any other unsorted types. Check out NSSortDesciptor and the Apple documentation on sort descriptors at . –JediKnil

Thanks, JediKnil. This is leading me on an interesting chase I have not completed. So far, I am finding Apple’s documentation of NSSortDescriptor profoundly opaque in explaining how to apply it to my images, which have a definite sortable order.

The quick-and-easy solution to my table-sorting problem turns out to be ridiculously simple, since the set of images is one-to-one with a sortable set of value ranges in an adjoining column. What I have done instead is to set the sort key for the column of images to be the same as that for the column of values that I actually want to use to sort the table when the user clicks the column of images. I am assuming this key I set is actually the model key, and not just the identifier for the table column, which of course uses the same string as the model key.

I hope the above description is more or less comprehensible. This solution works only because the images represent and augment values in another column of the table. If I needed to sort the images independently of other columns, I would have to fall back on NSSortDescriptor, but I haven’t seen any usable examples of how to install one of these inside my array controller. If I do this for one column, would I have to do it for all columns that I want to use to sort the table?

Sort keys are indeed model keys, not column identifiers. So if you need to sort by something that’s not a column, that’s ok, you just need an accessible model key that represents the sorting order.