NSMutableArray上的Sum复制

Bru*_*los 1 iphone nsmutablearray nsmutabledictionary ios

我有一个NSMutableArray类型的对象NSMutableDictionary,

NSMutableDictionary包含2个键

- 航空公司(String)

-Rating(整数)

我有一个NSMutableArray所有的对象,我需要的是总结所有航空公司重复对象的评级,一个例子:

Airline  Rating

  A         2

  B         3

  B         4

  C         5
Run Code Online (Sandbox Code Playgroud)

最终结果数组将是A = 2,C = 5和B的总和等于7.

我的代码到目前为止:

for (int i = 0; i < arrayMealRating.count; ++i) {
         NSMutableDictionary *item = [arrayMealRating objectAtIndex:i];
         NSLog(@"item=%@",item);
         for (int j = i+1; j < arrayMealRating.count; ++j)
         {
           if ([[item valueForKey:@"Airline"] isEqualToString:[arrayMealRating objectAtIndex:j]]){
                NSMutableDictionary *item = [arrayMealRating objectAtIndex:j];
                NSMutableDictionary *item1 = [arrayMealRating objectAtIndex:i];
                NSInteger auxCount =  [[item valueForKey:@"setMealRating"] integerValue] + [[item1 valueForKey:@"setMealRating"] integerValue];

                NSMutableDictionary *aux = [NSMutableDictionary dictionaryWithObjectsAndKeys:[item valueForKey:@"Airline"], @"Airline"
                                                        ,[NSString stringWithFormat:@"%d",auxCount], @"setMealRating"
                                                        ,nil];
                NSLog(@"aux=%@",aux);
                [arrayMealRating replaceObjectAtIndex:i withObject:aux];

            }
         }
   }
Run Code Online (Sandbox Code Playgroud)

我知道有点乱,但我不知道如何使用NSMutableDictionary,任何帮助将不胜感激,在此先感谢!

Cra*_*ens 5

如果您不想改变存储数据的方式,那么您将如何使用键值编码来实现它.下面是@distinctUnionOfObjects和@sum文档的直接链接.

// Get all the airline names with no duplicates using the KVC @distinctUnionOfObjects collection operator
NSArray *airlineNames = [arrayMealRating valueForKeyPath:@"@distinctUnionOfObjects.Airline"];

// Loop through all the airlines
for (NSString *airline in airlineNames) {

    // Get an array of all the dictionaries for the current airline
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(Airline == %@)", airline];
    NSArray *airlineMealRating = [arrayMealRating filteredArrayUsingPredicate:predicate];

    // Get the sum of all the ratings using KVC @sum collection operator
    NSNumber *rating = [airlineMealRating valueForKeyPath:@"@sum.Rating"];
    NSLog(@"%@: %@", airline, rating);
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出

A: 2
B: 7
C: 5
Run Code Online (Sandbox Code Playgroud)