2012-06-25 21 views

risposta

20
NSInteger sum = 0; 
for (NSNumber *num in myArray) { 
    sum += [num intValue]; 
} 
4

scorrere la matrice

int count = [array count]; 
NSInteger sum = 0; 
for (int i = 0; i < count; i++) { 
    sum += [[array objectAtIndex:i] integerValue]; 
} 
7
long long sum = ((NSNumber*)[array valueForKeyPath: @"@sum.longLongValue"]).longLongValue; 
+0

Grazie mille! – Winston

+0

'valueForKeyPath:' restituisce un oggetto, non un numero intero. –

2
int total = 0; 
for (NSNumber *number in array) 
{ 
    total += [number intValue]; 
} 

può questo vi aiuterà a

148

È possibile utilizzare questo:

NSArray* numbers = //array of numbers 
NSNumber* sum = [numbers valueForKeyPath: @"@sum.self"]; 
+4

Questa è la soluzione più elegante. Documenti qui: http: //developer.apple.com/library/ios/ipad/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html – Jon

+1

Questa è sicuramente la soluzione più elegante. Tuttavia c'è un piccolo problema. Se uno degli elementi dell'array è NSNull, si blocca. –

+0

Inoltre è documentato eseguire tutte le operazioni aritmetiche con 'double's. Quindi, cinque anni dopo, con il runtime a 64 bit e 'NSInteger' che ora hanno la stessa dimensione di un' double', questo rischia di perdere la precisione quando i numeri sono grandi. – Tommy

3
[[numbersArray valueForKeyPath:@"@sum.self"] integerValue] 
Problemi correlati