我有一个NSDates数组,我想从数组中获取最大的NSDate。虽然我总是可以对它们进行排序并抓住第一个/最后一个,但是有没有办法用KeyValueCoding或其他一些快速的单行方式来做到这一点?我知道如果对象有一个日期属性,我可以使用像valueForKeyPath @“@ max.date”这样的东西,但是如果对象本身就是日期呢?
感谢
答案 0 :(得分:12)
你可以使用,
NSDate *maxDate = [dateArray valueForKeyPath:@"@max.self"];
这将为您提供数组中最大的日期。在执行此操作之前,您不必对数组进行排序。
@max运算符比较由。指定的属性的值 操作员右侧的关键路径并返回最大值 找到。最大值使用compare:方法确定 指定键路径上的对象。比较属性对象 必须支持相互比较。如果值合适 关键路径的一边是零,它被忽略。
请注意,@ max将执行compare:
,然后会找出最大值。
答案 1 :(得分:2)
同意@SeanDanzeiser。更具体地说,这是一个~70字节的单行:
// if dateArray is the array of dates ...
NSDate *maxDate = [[dateArray sortedArrayUsingSelector:@selector(compare:)] lastObject];