0

我对实体距离排序有点问题。例如,13 英里将排在第一位,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 排在第一位,因为在默认比较器中比较字符串时,“13”小于“2”。

于 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 回答