从NSArray,KVC获得最大日期

时间:2013-02-28 23:22:12

标签: ios objective-c cocoa-touch nsdate key-value-coding

我有一个NSDates数组,我想从数组中获取最大的NSDate。虽然我总是可以对它们进行排序并抓住第一个/最后一个,但是有没有办法用KeyValueCoding或其他一些快速的单行方式来做到这一点?我知道如果对象有一个日期属性,我可以使用像valueForKeyPath @“@ max.date”这样的东西,但是如果对象本身就是日期呢?

感谢

2 个答案:

答案 0 :(得分:12)

你可以使用,

NSDate *maxDate = [dateArray valueForKeyPath:@"@max.self"];

这将为您提供数组中最大的日期。在执行此操作之前,您不必对数组进行排序。

来自documentation

  

@max运算符比较由。指定的属性的值   操作员右侧的关键路径并返回最大值   找到。最大值使用compare:方法确定   指定键路径上的对象。比较属性对象   必须支持相互比较。如果值合适   关键路径的一边是零,它被忽略。

请注意,@ max将执行compare:,然后会找出最大值。

答案 1 :(得分:2)

同意@SeanDanzeiser。更具体地说,这是一个~70字节的单行:

// if dateArray is the array of dates ...
NSDate *maxDate = [[dateArray sortedArrayUsingSelector:@selector(compare:)] lastObject];