2012-06-25 27 views

Trả lời

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

Duyệt qua mảng

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

Cảm ơn bạn rất nhiều! – Winston

+0

'valueForKeyPath:' trả về một đối tượng, không phải là một số nguyên. –

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

có thể điều này sẽ giúp bạn

148

Bạn có thể sử dụng này:

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

Đây là giải pháp thanh lịch nhất. Tài liệu tại đây: http: //developer.apple.com/library/ios/ipad/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html – Jon

+1

Đây chắc chắn là giải pháp thanh lịch nhất. Tuy nhiên có một vấn đề nhỏ. Nếu một trong các phần tử trong mảng là NSNull, nó sẽ bị treo. –

+0

Ngoài ra, nó được ghi lại để làm tất cả số học với 'double's. Vì vậy, năm năm sau, với thời gian chạy 64 bit và 'NSInteger' bây giờ có cùng kích thước với một' double', điều đó có thể làm mất đi độ chính xác khi số lớn. – Tommy

3
[[numbersArray valueForKeyPath:@"@sum.self"] integerValue] 
Các vấn đề liên quan