我使用NSArrayController创建了一个示例应用程序,显示了使用NSTableView获得工资的员工列表。
基本功能正在按预期工作。当在表格列compare
的属性窗格中分配选择器 - caseInsensitiveCompare
或employeeName
时,排序工作正常。
当我尝试按字符串长度对字符串长度进行排序时出现问题,方法是将IB中的选择器设置为 - length
,表格列为employeeName
。它按字符串长度排序,但做得不合适。
It is doing sorting on alternate clicks
即。在第一次单击时,它按长度按降序对表中的内容进行排序。然后在第二次单击时,它不会按长度按升序排列内容,而是按升序设置顶部的箭头。然后在第三次点击时按长度按升序排列内容,但在表格栏顶部设置箭头,如下降等等......
有人可以建议我在某处错了吗?
谢谢,
Miraaj
答案 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
属性或方法。