4

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

谢谢

4

2 回答 2

12

您可以使用,

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

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

文档中,

@max 运算符比较运算符右侧的键路径指定的属性的值,并返回找到的最大值。最大值是使用指定键路径上对象的 compare: 方法确定的。比较的属性对象必须支持相互比较。如果键路径右侧的值为 nil,则忽略它。

请注意,@max 会这样做compare:,然后会找出最大值。

于 2013-03-01T00:32:25.377 回答
2

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

// if dateArray is the array of dates ...
NSDate *maxDate = [[dateArray sortedArrayUsingSelector:@selector(compare:)] lastObject];
于 2013-03-01T00:21:02.150 回答