1

我的设置:

  • 我有一个 sqlite 数据库,我从中填充 NSDictionary 对象的 NSMutableArray,这是我的 NSTableView 的数据源。
  • 其中一列包含“时间”,时间是一个包含秒的浮点数。
  • 我想将此列中的值显示为分钟:秒。例如,我的数据将是 123.4329387 我想显示 2:03,我对应用于列中我的 NSTextField 的 NSFormatter(或 NSNumberFormatter)的子类没有问题。
  • 我通过使用 IB 中的表列属性设置了排序,我只是将排序键设置为“时间”,选择器设置为“比较:”,无需格式化程序即可正常工作。

目前,当我排序(降序)时,这给了我类似的东西

1:37, 1:31, 0:10, 0:10, 0:09, 1:30, 1:30, 1:26, 0:09

和类似的废话,看起来好像发生了什么事,但绝对没有排序。

如何获得排序以查看基础数据而不是格式化值?或者,如何指定自定义排序方法以及将所述方法的代码放在哪里?我已经搜索了很多,但没有找到任何可以帮助我解决这个问题的东西,非常感谢任何帮助。

4

1 回答 1

1

事实证明,当它进行排序时,它使用了 NSString 类中的 compare: ,但它使用的是底层数字数据。我不确定这里到底发生了什么,但我设法通过在名为“timeCompare”的 NSString 类别中创建自己的比较方法来解决这个问题。然后在界面生成器中,我只需将“timeCompare:”放在表格列的选择器字段中。这让它调用我的自定义比较方法,我刚刚将字符串转换为 NSNumbers 并在它们上调用 compare:。

于 2010-04-28T21:55:32.160 回答