通过cocoa绑定在IB中完成时,按字符串长度排序表列不能正常工作

时间:2010-06-13 13:56:14

标签: sorting cocoa-bindings nstableview nsarraycontroller

我使用NSArrayController创建了一个示例应用程序,显示了使用NSTableView获得工资的员工列表。

基本功能正在按预期工作。当在表格列compare的属性窗格中分配选择器 - caseInsensitiveCompareemployeeName时,排序工作正常。

当我尝试按字符串长度对字符串长度进行排序时出现问题,方法是将IB中的选择器设置为 - length,表格列为employeeName。它按字符串长度排序,但做得不合适。

It is doing sorting on alternate clicks即。在第一次单击时,它按长度按降序对表中的内容进行排序。然后在第二次单击时,它不会按长度按升序排列内容,而是按升序设置顶部的箭头。然后在第三次点击时按长度按升序排列内容,但在表格栏顶部设置箭头,如下降等等......

有人可以建议我在某处错了吗?

谢谢,

Miraaj

2 个答案:

答案 0 :(得分:4)

我猜你正在通过Mac OS X的第8章Cocoa编程,

您需要将sortKey设置为personName.length,将选择器设置为compare:列。

然后排序描述符将通过'比较'字符串'lengths'来排序。

答案 1 :(得分:0)

回答macOS开发的初学者(阅读BNR的书)和Swift语言:

Swift字符串没有length属性。您可以通过其字符数组的计数来访问它的长度。

要实现此目的,您应将sortKey设置为name.characters.count,将selector设置为compare:

我猜BNR建议您应该找到代表字符串长度的内容,而不是length属性或方法。