【问题标题】:sum quantity of dictionaries in array数组中字典的总和
【发布时间】:2012-09-29 06:21:51
【问题描述】:

我有一个包含 NSDictionary 列表的 NSArray。喜欢:

NSArray *array = ...;
NSDictionary *item = [array objectAtIndex:0];
NSLog (@"quantity: %@", [item objectForKey: @"quantity"]);

如何对数组的所有字典中包含的所有数量求和?

【问题讨论】:

    标签: objective-c nsarray sum-of-digits


    【解决方案1】:

    如果您在数组上调用 valueForKey: 它会为您提供该键的所有值的数组,因此 [array valueForKey:@"quantity"] 将为您提供一个数组,您可以循环并汇总所有值。

    【讨论】:

    • 这是从原始数组中的每个字典中获取数组的好方法!非常感谢!
    【解决方案2】:

    我觉得你可以试试KVC

    NSMutableArray *goods = [[NSMutableArray alloc] init];
    NSString *key = @"quantity";
    
    [goods addObject:@{key:@(1)}];
    
    [goods addObject:@{key:@(2)}];
    
    [goods addObject:@{key:@(3)}];
    
    NSNumber *sum = [goods valueForKeyPath:@"@sum.quantity"];
    NSLog(@"sum = %@", sum);
    

    【讨论】:

    • 您正在更新同一个字典并将其添加 3 次,因此总和将为 9,而您期望为 6。您需要在每种情况下创建一个新字典,例如 [goods addObject:@{@"quantity": @1}];
    • @ChristopherPickslay 感谢您的指正。答案已更新。
    【解决方案3】:
    NSMutableArray *quantityArray = [item objectForKey: @"quantity"];
    int total =0;
    for(int i=0;i<[quantityArray count];i++)
    {
      total+= [quantityArray objectAtIndex:i];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2018-10-19
      • 2020-04-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      相关资源
      最近更新 更多