В дополнение к предложению katzenhut о вручную расчета среднего, вы можете использовать операторы сбора КВЦ, тоже, например:
NSArray *array = @[@10, @25, @30];
NSNumber *average = [array valueForKeyPath:@"@avg.self"];
Или, если дело с объектами, например, «Продукт» модель объекта с этим интерфейсом:
@interface Product : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic) double price;
- (id)initWithName:(NSString *)name price:(double)price; // the corresponding implementation should be obvious, so I'll not include it in this code snippet
@end
Вы могли бы сделать:
NSMutableArray *products = [NSMutableArray array];
[products addObject:[[Product alloc] initWithName:@"item A" price:1010.0]];
[products addObject:[[Product alloc] initWithName:@"item B" price:1025.0]];
[products addObject:[[Product alloc] initWithName:@"item C" price:1030.0]];
NSNumber *average = [products valueForKeyPath:@"@avg.price"];
Если вы хотите, чтобы результаты и заполнить этикетку с результатами, вы могли бы сделать что-то вроде:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.maximumFractionDigits = 2; // two decimal places?
self.averageLabel.text = [formatter stringFromNumber:average];
Преимущества NSNumberFormatter
над stringWithFormat
является то, что у вас есть больший контроль над строковым представлением число, например он может наблюдать локализацию, использовать тысячные разделители и т. д.
Я не знаю, как для этого ... но в чем проблема с числами из изменяемого массива? –
Нет ничего плохого в использовании чисел из изменяемого массива. Фактически, это ** - это форма модели, поддерживающая ваше представление о сортировке, которое имеет в виду @Rob. При этом вам следует описать данные, которые хранятся в массиве по его просьбе. (Являются ли они NSNumber?) – lnafziger