Objective c tableview数据的最小/最大方法

Objective c tableview数据的最小/最大方法,objective-c,xcode4.3,Objective C,Xcode4.3,在我的tableview上,在搜索后填充它之前,我想在tableview顶部的文本字段中添加当前搜索的最小距离和最大距离。我似乎找不到一个方法来确定这些参数,我的搜索结果从2到50个不等。我不想用比较循环中每个项目与当前位置之间的距离的骇人方式。有人能给我指出一种确定可变数组中元素的最小值/最大值的干净方法吗?如果需要数组中每个元素的值,那么就必须以某种方式迭代数组。循环没有问题。不过,除了显式循环外,还有其他方法可以通过数组。也许会让你快乐: __block CGFloat minDistan

在我的tableview上,在搜索后填充它之前,我想在tableview顶部的文本字段中添加当前搜索的最小距离和最大距离。我似乎找不到一个方法来确定这些参数,我的搜索结果从2到50个不等。我不想用比较循环中每个项目与当前位置之间的距离的骇人方式。有人能给我指出一种确定可变数组中元素的最小值/最大值的干净方法吗?

如果需要数组中每个元素的值,那么就必须以某种方式迭代数组。循环没有问题。不过,除了显式循环外,还有其他方法可以通过数组。也许会让你快乐:

__block CGFloat minDistance = INF;
__block CGFloat maxDistance = -INF;
[locationsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
    CGFloat dist = // calculate distance from obj to current location
    if( dist < minDistance ){
        minDistance = dist;
    }
    if( dist > maxDistance ){
        maxDistance = dist;
    }
 }];
\u块CGFloat minDistance=INF;
__块CGFloat maxDistance=-INF;
[locationsArray enumerateObjectsUsingBlock:^(id对象,整数idx,布尔*停止){
CGFloat dist=//计算从obj到当前位置的距离
如果(距离<距离){
距离=距离;
}
如果(距离>最大距离){
最大距离=距离;
}
}];
枚举数组的其他选项可以在“集合编程主题”文档中的下找到


您还应该查看:
[locationsArray valueForKey:@“@max.distance”]
将拉出由数组的任何成员持有的最大
距离。这似乎正是你想要的,但有两件事需要注意。首先,对象必须已经具有
distance
属性——在此过程中不能进行任何计算。其次,属性必须是一个对象(在本例中,可能是一个
NSNumber
)而不是像
CGFloat
那样的原语,因为
valueForKey:
将发送
compare:
到每个属性访问的结果。

我昨晚读到了kvc操作符,这似乎是要走的路,尽管我无法在实现它的过程中迅速启动。谢谢他们在某些情况下很方便。例如,当您使用阵列控制器时,也可以在IB内部使用它们。很高兴我能帮忙。