2012-11-07 57 views
2

在我的应用程序,我有一本字典有两个阵列,如:排序字典和更改索引

NSDictionary *d=[[NSDictionary alloc]initWithObjectsAndKeys:listOfEvents,@"l",arr_distance,@"d", nil]; 
     NSLog(@"%@",d); 


d =  (
    "353.90", 
    "354.68", 
    "350.42", 
    "1.18" 
); 
l =  (
      { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      } 
); 
} 

我想排序与第一阵列的字典,当指数的变化,第二个数组索引也根据它改变。

这两个数组索引是相互关联的。

@ABC你试过代码

NSDictionary *dict = [NSDictionary dictionaryWithObjects:listOfEvents forKeys:arr_distance]; 
     NSArray *sortedArray = [arr_distance sortedArrayUsingSelector:@selector(compare:)]; 
     NSMutableArray *sortedValues = [NSMutableArray array]; 

    for (NSString *key in sortedArray) { 
     [sortedValues addObject:[dict valueForKey:key]]; 
    } 

    NSLog(@"%@",sortedValues); 

结果:

{ 1.18,2563.91,2563.41,2563.39,350,353,354}

+0

u能请进一步解释? – IronManGill

+1

因此,实现一种排序算法,并且每次交换a的元素时,都会对B执行相同操作。或者创建一个新的索引数组{1,2,3,4,0,5} –

+0

但是当我想要同时显示索引数组相互关联,如Array a是距离&数组B是来自Web的其他信息。 – user1673099

回答

1

这里是一个办法做到这一点,

NSArray *a = [NSArray arrayWithObjects:@"8", @"2", @"4", nil]; 
    NSArray *b = [NSArray arrayWithObjects:@"val1", @"val2", @"val3", nil];//This can be an array of any objects 

a = ["353.90", "354.68", "350.42", "1.18"]; 
b = [{ 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
     }]; 

像这样做,

NSDictionary *dict = [NSDictionary dictionaryWithObjects:b forKeys:a]; 
    NSArray *sortedArray = [a sortedArrayUsingComparator:^(id firstObject, id secondObject) { 
     return [((NSString *)firstObject) compare:((NSString *)secondObject) options:NSNumericSearch]; 
    }]; 
    NSMutableArray *sortedValues = [NSMutableArray array]; 

    for (NSString *key in sortedArray) { 
     [sortedValues addObject:[dict valueForKey:key]]; 
    } 

    NSLog(@"%@",sortedValues); 
+0

问题是什么,因为我能够正确分类。如果问题与排序有关,则可能必须更改排序逻辑。这是一个字符串。 – iDev

+0

您在排序时看到的问题是什么?我的理解是,当d被排序时,l也应该按照相同的顺序排序,对吧? – iDev

+0

那到底是什么问题?因为刚才我试过,我按照这个顺序排序,1.18, 350.42, 353.90, 354.68。你能用你得到的NSLog语句输出来更新问题吗? – iDev