如何在objective-c中对多维数组进行排序?

时间:2013-06-12 09:34:12

标签: iphone ios objective-c sorting nsmutablearray

我有一个二维数组如下

NSArray *cities = [NSArray arrayWithObjects:@"New Delhi",@"Karachi",@"Dhaka",@"Columbu", nil];
NSArray *distance = [NSArray arrayWithObjects:@"500",@"1400",@"1200",@"2800", nil];
NSMutableArray *details= [[NSMutableArray alloc]initWithCapacity:cities.count];
[details addObject:cities];
[details addObject:distance];

现在,details数组看起来像

(
    (
    "New Delhi",
    Karachi,
    Dhaka,
    Columbu
 ),
    (
    500,
    1400,
    1200,
    2800
 )
)

我需要按升序w.r.t distance数组对数组进行排序 即,

(
    (
    "New Delhi",
    Dhaka,
    Karachi,
    Columbu
 ),
    (
    500,
    1200,
    1400,
    2800
 )
)

怎么做?

我还需要按字母顺序w.r.t cities数组对整个数组进行排序。

我尝试使用sortUsingComparator,但无法完全解决问题。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

结构复杂。制作包含cityname的课程distance。然后添加此类的对象。然后,您可以使用city.distance进行排序。

答案 1 :(得分:1)

self.arrayForRows = [[NSMutableArray alloc]init];
NSMutableArray *arrayForCities = [[NSMutableArray alloc]initWithObjects:@"Mumbai",@"Vizag",@"Hyderabad",@"Ahemdabad",@"Secunderabad", nil];
    NSMutableArray *arrayForDistance = [[NSMutableArray alloc]initWithObjects:@"200",@"320",@"32",@"450",@"14", nil];

    for (int i=0; i<arrayForCities.count; i++)
    {
        NSMutableDictionary *tempDicts = [[NSMutableDictionary alloc]init];
        [tempDicts setObject:[arrayForCities objectAtIndex:i] forKey:@"names"];
        [tempDicts setObject:[NSNumber numberWithInt:[[arrayForDistance objectAtIndex:i] intValue]] forKey:@"distance"];
        [self.arrayForRows addObject:tempDicts];
    }

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES];
    [self.arrayForRows sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];