Сумма массива - Objective-C

Я только начинаю, и я ищу простой способ суммировать простой массив. Я прочитал сайт разработчика Apple по кодированию ключевых значений, и я не понимаю, как применить это к моему массиву, или если это подходящий способ суммировать это.

Моим камнем преткновения с кодированием значения ключа является .keypathToProperty - я могу понять, что вам нужна дополнительная ссылка в 2D-массиве, но они не отображают код массива, а только ключевую ссылку на заголовок строки поэтому я пока не могу понять.

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

Я ценю ответы!

Спасибо

Грэхэм

Ответы

Ответ 1

Автоматический способ сделать это:

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

Но если вы только начинаете, я бы рекомендовал избегать операторов набора ключей и перейти на более простой способ:

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

Ответ 2

Swift 3: (метод Dave DeLong преобразован):

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

Это должно работать аналогично ему Objective-C.

Ответ 3

В Swift 4:

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