如何排序数组?

时间:2012-12-06 06:59:50

标签: iphone ios

  

我在这里被困住了   我在这里有纬度和经度数组,从JSON Parsing获取它

Arr_Lat=[[[[main valueForKey:@"responseData"]valueForKey:@"results"]valueForKey:@"lat"] copy];
Arr_Long=[[[[main valueForKey:@"responseData"]valueForKey:@"results"]valueForKey:@"lng"] copy];

我已经计算了当前位置与纬度和长度索引数组之间的距离并存储到数组......

CLLocation *currLoc = [[CLLocation alloc] initWithLatitude:appDel.curr_lat longitude:appDel.curr_long];

CLLocation *destLoc = [[CLLocation alloc] initWithLatitude:appDel.str_lat longitude:appDel.str_long];

distance = [destLoc distanceFromLocation:currLoc]/1000;

DistStr = [[NSMutableString alloc]initWithFormat:@" %0.3f",distance];


    [appDel.Arr_distance addObject:DistStr];

我按照这样的距离排序

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES]autorelease];


sortedFloats = [appDel.Arr_distance sortedArrayUsingDescriptors:
                             [NSArray arrayWithObject:sortDescriptor]];

我显示了标题,地址和距离,但地址和距离不匹配 我想根据上升距离数组对地址进行排序....

提前感谢您的帮助.................

1 个答案:

答案 0 :(得分:0)

Arr_distance是NSString,我认为对这样的数组进行排序是不正确的。 试试这个:

sortedFloats = [appDel.Arr_distance sortedArrayUsingComparator:^(NSString *dis1, NSString *dis2){
    if ([dis1 floatValue] < [dis2 floatValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    } else {
        return (NSComparisonResult)NSOrderedAscending;
    }
}];]

您可能需要根据需要更换NSOrderedDescending或NSOrderedAscending。