0

エンティティ距離の並べ替えに少し問題があります。たとえば、13 マイルが最初に表示され、2 マイルが 2 番目に表示されます。これが私のコードです:

NSArray *sortedArray;
        sortedArray = [objects sortedArrayUsingComparator:^(id a, id b) {
            NSString * first= [(GooglePlacesObject*)a distanceInMilesString];
            NSString * second = [(GooglePlacesObject*)b distanceInMilesString];
            return [first compare:second];
        }
        ];

        for (GooglePlacesObject * place in sortedArray) {
            Model * model = [Model fetchFromGooglePlacesObject:place];
            [self.gFoundModels addObject:model];


        }
    }

どんな助けでも素晴らしいでしょう。

4

2 に答える 2

0

デフォルトのコンパレータで文字列を比較する場合、「13」は「2」より小さいため、文字列を並べ替えているようです。13 が最初に来ます。

于 2012-06-26T02:09:22.007 に答える
0

私が見る限り、文字列を比較するのではなく、浮動小数点数に変換してどちらが大きいかを返す必要があります。

編集:

私の理解では、それはこのようなものです

NSArray *sortedArray;
sortedArray = [objects sortedArrayUsingComparator:^(id a,id b)
{
    float first=[[(GooglePlacesObject*)a distanceInMilesString] floatValue];
    float second=[[(GooglePlacesObject*)b distanceInMilesString] floatValue];
    return first>second;
}];
于 2012-06-26T02:09:23.597 に答える