2011-01-10 65 views
15

我剛剛開始,我正在尋找一個簡單的方法來總結一個簡單的數組。我已經讀過關鍵值編碼的蘋果開發者網站,我不明白如何將它應用到我的數組,或者如果這是總結這一點的適當方式。總和陣列 - Objective-C

我用關鍵值編碼的絆腳石是.keypathToProperty - 我可以理解你需要在二維數組中進一步引用,但它們不顯示數組代碼,只顯示數組代碼的關鍵路徑排,所以我無法弄清楚。

NSMutableArray *numArray = [NSMutableArray arrayWithCapacity:4]; 
    [numArray addObject:num1]; 
    [numArray addObject:num2]; 
    [numArray addObject:num3]; 
    [numArray addObject:num4]; 

我很欣賞的答覆!

感謝

格雷厄姆

回答

71

自動的方式來做到這一點是:

NSNumber * sum = [numArray valueForKeyPath:@"@sum.self"]; 

但如果你是剛剛開始,我會建議避免收集關鍵路徑運營商和去爲更簡單的方式:

double sum = 0; 
for (NSNumber * n in numArray) { 
    sum += [n doubleValue]; 
} 
+7

哎呀,我不知道`@ sum.self`,哇,我每天提醒我多少不知道。 – 2011-01-10 04:58:16

+0

有趣的是,這樣的關鍵還像「max.self」,「min.self」... 真棒解決方案.. – Ankit 2017-04-08 18:14:38

0

Swift 3:(Dave DeLong's method轉化):

let sum = (numArray as AnyObject).value(forKeyPath:"@sum.self") as! Double 

這應該以類似的方式工作,它是Objective-C的對應。

0

在斯威夫特4:

let array = [1,2,3,5] 
let sum = array.reduce(0, {$0 + $1}) 
print(sum)