2010-04-21 28 views
1

我的设置:如何让NSFormatter的子类与NSTableColumn排序键和选择器一起工作?

  • 我有我从中填充的NSDictionary的NSMutableArray的对象,这是对我的NSTableView的数据源SQLite数据库。
  • 其中一列包含“时间”,时间是一个持有秒的浮点数。
  • 我想将此列中的值显示为分钟:秒。例如,我的数据是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

和类似的废话,它看起来像事情正在进行,但它绝对没有排序。

如何获得排序来查看底层数据而不是格式化值?或者,我该如何指定自定义排序方法,并在哪里放置所述方法的代码?我已经搜索了很多,并没有找到任何帮助我解决这个问题,任何帮助,这是最赞赏。

回答

1

事实证明,它在排序时使用的是比较:来自NSString类,但它使用的是基础数值数据。我不完全确定这里的所有内容,但我设法通过在名为“timeCompare”的NSString类中创建自己的比较方法来解决这个问题。然后在界面生成器中,我只在表格列的选择器字段中输入“timeCompare:”。这让它调用我的自定义比较方法,我只是将给定的字符串转换为NSNumbers并调用compare:就可以了。

相关问题