2013-06-12 51 views
-1

我有一个二维数组如下如何对objective-c中的多维数组进行排序?

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 
) 
) 

我需要与升序WRT数组排序distance阵列 即

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

如何做到这一点?

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

我试过使用sortUsingComparator但是,不能完全得到解决方案。

任何帮助,将不胜感激。

+0

http://stackoverflow.com/questions/13980513/objective-c-sort-two-dimensional-array –

+0

我已经给了一个[答案](http://stackoverflow.com/a/16710509/ 767730)到一个类似的问题,检查出来。 – Anupdas

回答

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]]; 
+0

它工作正常,谢谢你 – NAZIK

+0

这是一个巧合,我们[答案](http://stackoverflow.com/a/16710509/767730)是非常相同的。 – Anupdas

+0

我将sortdescriptor或initwithkey更改为名称对象,它也按字母顺序对数组进行排序。急需帮助,thx再次 – NAZIK

1

结构复杂。创建一个类city包含namedistance。然后添加这个类的对象。然后您可以使用city.distance进行排序。

+0

+1快速建议 – NAZIK

相关问题