我在NSArray中有几个餐馆的列表,我想将与我的位置最接近的餐馆复制到NSMutableArray并订购它们......我有以下代码
@property(strong, nonatomic) NSArray *restaurants;
@property(strong, nonatomic) NSMutableArray *orderedRestaurants;
-(void) orderRestaurants{
for(RestaurantBranch *restaurant in _restaurants){
if([self getDistance:restaurant]<10){
[_orderedRestaurants addObject:restaurant];
}
}
}
但我找不到按计算距离
订购NSMutableArray的有效方法答案 0 :(得分:2)
您可以将原始数组复制到已排序的数组中,然后根据相对于“self”的每个条目的距离对其进行排序。
在代码中我假设距离是浮点数。使用whataver类型,您的距离定义为。
- (void) orderRestaurants{
self.orderedRestaurants=[self.restaurants mutableCopy];
[self.orderedRestaurants sortUsingComparator:^NSComparisonResult(id a, id b) {
NSComparisonResult result=NSOrderedSame;
float distancea=[self getDistance:(RestaurantBranch *)a];
float distanceb=[self getDistance:(RestaurantBranch *)b];
if (distancea < distanceb){
result = NSOrderAscending;
}
else if (distanceb < distancea){
result = NSOrderDescending;
}
return result;
}];
}
结果是按距离排序的原始分支数组。
这将多次计算距离。您可以根据距离计算的复杂程度来缓存距离。