2012-10-09 31 views
2

我有一個包含NSDictionary列表的NSArray。像:數組字典總數

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

我怎樣才能總結包含在數組的所有字典中的所有數量?

回答

2

如果您在數組上調用valueForKey:它會爲您提供該鍵的所有值的數組,因此[array valueForKey:@「quantity」]將爲您提供一個數組,您可以循環並將所有值。

+0

這是一個如此偉大的方式來獲得每個字典數組原始數組中!非常感謝你! – sunkehappy

5

我想你可以嘗試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); 
+0

您正在更新相同的字典並將其添加3次,因此當您預期爲6時,總和將爲9。您需要在每種情況下創建一個新字典,例如'[add addObject:@ {@「quantity 「:@ 1}];' –

+0

@ChristopherPickslay感謝您的糾正。答案已更新。 – sunkehappy

0
NSMutableArray *quantityArray = [item objectForKey: @"quantity"]; 
int total =0; 
for(int i=0;i<[quantityArray count];i++) 
{ 
    total+= [quantityArray objectAtIndex:i]; 
}