2012-06-25 13 views

Antwort

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

Iterate durch das Array

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

Vielen Dank! – Winston

+0

'valueForKeyPath:' gibt ein Objekt und keine ganze Zahl zurück. –

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

kann dies helfen Ihnen

148

Sie diese verwenden können:

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

Dies ist die eleganteste Lösung. Docs hier: http: //developer.apple.com/library/ios/ipad/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html – Jon

+1

Dies ist definitiv die eleganteste Lösung. Es gibt jedoch ein kleines Problem. Wenn eines der Elemente im Array NSNull ist, stürzt es ab. –

+0

Es ist auch dokumentiert, alle Arithmetik mit 'double's zu machen. Fünf Jahre später, mit der 64-Bit-Laufzeit und dem "NSInteger", der jetzt die gleiche Größe wie ein "Double" hat, riskiert das einen Verlust an Präzision, wenn die Anzahl der Zahlen groß ist. – Tommy

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