直白迭代通过数组,仅在汽车寻找下面的功率限制,并挑选具有最高功率:
— (Car *)getHighestPowerFromCars:(NSArray *)carArray lessThan:(NSNumber *)maxPower
{
NSNumber* highest = nil;
Car* highestCar = nil;
for (Car* car in carArray)
{
NSNumber* power = car.enginePower;
if ([power compare:maxPower] == NSOrderedAscending])
{
if (highest == nil || [power compare:highest] == NSOrderedDescending])
{
highest = power;
highestCar = car;
}
}
}
return highestCar;
}
但没有任何理由真的为什么enginePower应该是一个NSNumber,而不是例如双。假设电力从不为负:
— (Car *)getHighestPowerFromCars:(NSArray *)carArray lessThan:(double)maxPower
{
double highestPower = -1.0;
Car* highestCar = nil;
for (Car* car in carArray)
{
double power = car.enginePower;
if (power < maxPower && power > highestPower))
{
highestPower = power;
highestCar = car;
}
}
return highestCar;
}
但随后排序和谓词SOOOO快...
看['NSPredicate'](https://developer.apple.com/library/mac /搜索/ q = nspredicate)。 – 2012-02-27 19:55:17