2

私のアプリには、次のような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";
           }
); 
}

最初の配列で辞書を並べ替えたいのですが、インデックスが変わると、それに応じて2番目の配列のインデックスも変わります。

両方の配列インデックスは互いに関連しています。

@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}

4

1 に答える 1

1

これを行う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);
于 2012-11-07T05:18:37.000 に答える