我正在创建一个 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/