NSSortDescriptor和nil值

时间:2010-01-07 15:10:33

标签: iphone cocoa cocoa-touch

我正在使用NSSortDescriptor按升序对NSDate对象进行排序。但是,我需要nil日期位于列表的底部,而目前它们位于顶部。

3 个答案:

答案 0 :(得分:9)

最后我决定使用nil值并不是一个好主意,如果我想将nil值显示在升序列表的底部,我应该将日期设置为[NSDate distantFuture]并检查这个在显示它们之前。事实证明,这在应用程序中也具有更多的语义意义。

答案 1 :(得分:7)

看起来你已经有了一个解决方案,但是对于其他任何想要使用nil NSDates的人,并将它们放在底部,我使用下面的代码,我按降序排序,然后反转发送给它的对象的顺序比较

_sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"dueDate"
                                                ascending:NO
                                               comparator:^NSComparisonResult(id obj1, id obj2)  {
                                                   return [obj2 compare:obj1];
                                               }];

答案 2 :(得分:6)

当然,我应该使用

initWithKey:ascending:selector:

并编写我自己的比较选择器