NSTableView排序问题(使用KVC)

时间:2011-02-13 02:19:32

标签: objective-c key-value-observing

我在NSTableView排序上遇到了一个奇怪的问题。

我用NSTableView创建了一个简单的应用程序 有4列。然后我用KVC把它绑定到了 阵列控制器。

然后我将一些数据添加到NSMutableArray。

Bulid&&运行应用程序,我可以看到里面的数据 该表并通过单击数据可以的标题 正确分类。

到目前为止一切正常。

然后我尝试将“caseInsensitiveCompare”添加到 每列。所以我打开了IB,设置了排序键和 每个列的选择器(“caseInsensitiveCompare:”)。

然后Bulid&&运行应用程序,但是当我点击标题时 排序,我收到了错误消息:

-[NSCFNumber caseInsensitiveCompare:]: unrecognized selector sent to instance 0x1006254f0
-[NSCFNumber caseInsensitiveCompare:]: unrecognized selector sent to instance 0x1006254f0
......

然后我尝试删除排序键中的所有内容 每列的选择器。该应用程序再次成为现实。

似乎有什么问题?我真的很困惑......

PS: 如果我使用compare:而不是caseInsensitiveCompare:,一切都可以正常工作......

1 个答案:

答案 0 :(得分:0)

NSMutableArray中对象的其中一个值(例如属性或键)属于NSNumber类。由于此类处理数字,因此它不响应caseInsensitiveCompare:选择器。此选择器对NSString有意义。

表格视图中显示数字值的列应继续使用compare:对值进行排序。