3

CLLocation オブジェクトの配列があり、それらを比較して開始 CLLocation オブジェクトからの距離を取得できるようにしたいと考えています。数学は簡単ですが、これを行うための便利なソート記述子があるかどうか知りたいですか? NSSortDescriptor を避けて、独自の比較メソッド + バブル ソートを作成する必要がありますか? 私は通常、最大 20 個のオブジェクトを比較しているので、非常に効率的である必要はありません。

4

3 に答える 3

2

デイブの答えを改善するには...

iOS 4 以降では、コンパレータ ブロックを使用して、静的変数とカテゴリを使用する必要がなくなります。

NSArray *sortedLocations = [self.locations sortedArrayUsingComparator:^NSComparisonResult(CLLocation *obj1, CLLocation *obj2) {
    CLLocationDistance distance1 = [targetLocation distanceFromLocation:loc1];
    CLLocationDistance distance2 = [targetLocation distanceFromLocation:loc2];

    if (distance1 < distance2)
    {
        return NSOrderedAscending;
    }
    else if (distance1 > distance2)
    {
        return NSOrderedDescending;
    }
    else
    {
        return NSOrderedSame;
    }
}];
于 2013-03-08T15:05:32.157 に答える
1

カテゴリの応答に追加するだけです (これが方法です)。実際に自分で計算する必要がないことを忘れないでください。CLLocation インスタンス メソッドを使用できます。

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

2 つの位置オブジェクト間の距離を取得します。

于 2009-07-04T00:16:42.723 に答える