2015-04-20 47 views
0

我得在一個NSArray幾家餐館的名單,我想複製是最接近我的位置到一個NSMutableArray,責令的那些......我有下面的代碼秩序的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

回答

2

您可以將原來的數組排序它的距離相對於每個'自我」的條目複製到排序的數組,然後。

在代碼中我假設距離是一個浮點數。使用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; 
    }]; 
} 

結果是按距離排序的原始分支數組。

這將多次計算距離。根據您的距離計算的複雜程度,您可以查看緩存距離。