objective-c - NSTableView 中的排序

标签 objective-c cocoa nstableview

我正在创建一个 NSTableView 并使用委托(delegate)和数据源链接到我正在淹没表的类。在类中,我使用 NSMutableArray 来存储表的值。我可以在表中进行排序吗?我怎样才能做到这一点。我想根据列中的值进行排序。 我正在使用 sort hey & 选择器,但是当我运行时,我收到此错误 [<NSCFString 0x18da00> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.

如何解决这个问题。

最佳答案

您可以通过以下两种方式之一来解决此问题。如果您不确定自己在做什么,则更容易失败的方法是简单地对内容数组进行排序。您可以使用NSMutableArray-sort...:方法对其进行排序,结果将在表格中显示排序。

但是,“更好”的方法是使用 NSSortDescriptor 让表自行对输出进行排序。 (您可以在代码中或通过 Interface Builder 设置)。要获得与自定义类一起使用的排序描述符,您必须使它们符合 KVC 标准,但幸运的是,您只使用 NSString s,所以工作已经为您完成。在 Interface Builder 或代码中,将排序描述符的键设置为 self (因为您正在比较字符串本身,而不是它们的实例变量)和选择器 compare: (因为你只需要做一个简单的比较,并且 NSString 实现了这个方法)。这在 Interface Builder 中很容易完成(一旦您将 self 设置为键,compare: 甚至会为您弹出),但如果您想要制作一个复杂的排序描述符,则必须制作它在代码中。

关于objective-c - NSTableView 中的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936315/

相关文章:

ios - NSError 对象已经在第一次方法调用时填充

objective-c - 在 tvOS 下有条件编译的最佳方法是什么

cocoa - 在 UIView 中的 let 语句中引用 self.frame

iphone - iPhone应用程序读取文件时出现问题!

macos - 如何使用notificationconf?

objective-c - NSTableView 的默认键盘事件

iphone - 在 iPhone 上安装自定义企业应用程序时配置文件错误

iphone - 我们可以在最后更改 iphone 项目的 bundle 显示名称吗?

cocoa - 如果在 NSTableView 中选择了一项,如何使 NSTextField 只能编辑?

cocoa - 基于 View 的 NSTableView 中每一行的 NSViewController?