0

数字 (距離) で動作するこのコードを使用すると、最も近いものから最も遠いものへと並べ替えることができます。ただし、似たようなことをしたいのですが、代わりにアルファベット順に並べ替えます。したがって、本質的にself.namesをアルファベット順にソートする必要があります。また、最終的に self.names をアルファベット順に並べ替えたいと思います。同じ名前がある場合は、それらを距離で並べ替えます。これは可能ですか?

- (NSComparisonResult)sortByDistFromVor:(radiostations *)anObject
{

    if ([self.distFromVor doubleValue] < [anObject.distFromVor doubleValue]) {
        return NSOrderedAscending;
    } else if ([self.distFromVor doubleValue] > [anObject.distFromVor doubleValue]) {
        return NSOrderedDescending;
    }
    return NSOrderedSame;
}
4

1 に答える 1

2

String は比較を実装するため、radiostations クラス (慣例により名前は大文字にする必要があります) は、次のように名前の比較を実装できます。

- (NSComparisonResult)sortByName:(radiostations *)anObject {

    return [self.name compare:anObject.name];
}

そして、あなたが説明したように二次ソートを取得するには:

- (NSComparisonResult)sortByNameThenDistance:(radiostations *)anObject {

    NSComparisonResult result = [self sortByName:anObject];
    return (result == NSOrderedSame)? [self sortByDistFromVor:anObject] : result;
}
于 2012-04-25T02:06:55.137 に答える