2012-06-25 15 views

Odpowiedz

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

iterację tablicy

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

Dziękuję bardzo! – Winston

+0

'valueForKeyPath:' zwraca obiekt, a nie liczbę całkowitą. –

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

może to pomoże Ci

148

Można to wykorzystać:

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

To najbardziej eleganckie rozwiązanie. Dokumenty tutaj: http: //developer.apple.com/library/ios/ipad/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html – Jon

+1

To zdecydowanie najbardziej eleganckie rozwiązanie. Jest jednak mały problem. Jeśli jeden z elementów tablicy to NSNull, ulega awarii. –

+0

Jest również udokumentowane, że wykonuje wszystkie operacje arytmetyczne za pomocą 'double's. Pięć lat później, 64-bitowe środowisko wykonawcze i 'NSInteger' teraz mają ten sam rozmiar co' double', co ryzykuje utratę precyzji, gdy liczby są duże. – Tommy

3
[[numbersArray valueForKeyPath:@"@sum.self"] integerValue] 
Powiązane problemy