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