в первую очередь.Вы должны использовать Decimal (имя основных данных для nsdecimalnumber) и NSDecimalNumber, если вы хотите вычислить и сохранить валюту.Я реализовал код, который вам нужен, с помощью float.Но вы должны действительно изменить его на NSDecimalNumber.Прочитайте это , чтобы узнать, почему вы должны это сделать
Если вы хотите добавить значение расхода в заголовок раздела, это легко.Вы берете на себя все расходы в разделе и суммируете их.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
float expense = 0;
for (NSManagedObject *object in [sectionInfo objects]) {
expense += [[object valueForKey:@"expense"] floatValue];
}
return [NSString stringWithFormat:@"%@ [Expense: %f]", [sectionInfo name], expense];
}
Даже если вы не используете разделы в своей таблице, это будет работать.Но тогда вам следует изменить возвращенную строку.
Я думаю, вы должны понимать это.Существует также более общий способ сделать это.Я написал это немного более многословно для вас.Он использует 3 строки вместо 1 в цикле for, но делает то же самое.
float expense = 0;
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
NSNumber *objectExpenseNumber = [object valueForKey:@"expense"];
float objectExpense = [objectExpenseNumber floatValue];
expense = expense + objectExpense;
}
NSLog(@"Expense: %f", expense);
Не очень много объяснений.
edit: это будет код, если вы используете NSDecimalNumber
NSDecimalNumber *expense = [NSDecimalNumber decimalNumberWithString:@"0"];
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
NSDecimalNumber *objectExpenseNumber = [object valueForKey:@"expense"];
expense = [expense decimalNumberByAdding:objectExpenseNumber];
}
NSLog(@"Expense: %@", expense);