Я только начинаю программировать на iOS, поэтому большое спасибо за терпение и помощь заранее. Я являюсь сущностью «Расход» с атрибутом (float), называемым «значением». У меня есть tableView с заполненной формой coreData с NSFetchedResultsController. Я пытаюсь показать в ярлыке (или заголовке таблицы) общую сумму «значений» всех моих «Расходов», но я не могу реализовать решение после прочтения Apple Docs и googling на разных форумах. Конечно, дезориентация новичка. Оцените любые указания о наилучшем способе реализации этого короля операций или какой-либо код, который показывает аналогичное решение.Сумма атрибута CoreData
ответ
сначала. Вы должны использовать Decimal (основное имя данных для nsdecimalnumber) и NSDecimalNumber, если вы хотите вычислить и сохранить валюту. Я реализовал код, который вам нужен с float. Но вы должны действительно изменить его на NSDecimalNumber. Прочитайте this, чтобы узнать, почему вы должны это делать
Если вы хотите добавить значение расхода в заголовок раздела, это легко. Вы в основном берете на себя расходы всех объектов в разделе и суммируете их.
- (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-loop, но делает то же самое.
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);
Не очень много, чтобы объяснить.
редактировать: это будет код, если вы используете 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);
- 1. определить тип CoreData атрибута
- 2. Использование общая сумма с CoreData
- 3. Предоставление собственного сеттера для свойства/атрибута CoreData
- 4. Почему сбой CoreData при добавлении атрибута?
- 5. iOS Swift Суммирование значений атрибута CoreData
- 6. Изменить значение атрибута сущности CoreData через UITextView
- 7. CoreData выборки добавления атрибута на основе предиката
- 8. Обновления атрибута NSDictionary в CoreData не сохраняются
- 9. XSLT: Сумма определенного значения атрибута на основе имени другого атрибута
- 10. Основная сумма данных суммарного атрибута всех экземпляров
- 11. Rails ActiveRecord сумма звезд для второго атрибута?
- 12. ViewModel using CoreData
- 13. Добавление атрибута внутри объекта для CoreData ios 10
- 14. Fetch уникальный объект на основе имени атрибута из CoreData
- 15. Ошибка миграции CoreData после удаления атрибута из объекта
- 16. Проблема миграции CoreData во время изменения имени атрибута
- 17. Получите верхнюю часть от отдельного атрибута на CoreData
- 18. Идентификатор атрибута ядра CoreData и заданный атрибут сущности динамически
- 19. Restkit/CoreData - Обновление атрибута сущности не обновляется UITableView
- 20. Изменение Родитель Значение атрибута от ребенка в CoreData
- 21. Как получить сумму для определенного атрибута в базе данных CoreData?
- 22. Swift сбоя при создании нового CoreData атрибута к существующему объекту
- 23. Добавление и удаление CoreData на основе поискового запроса значения атрибута
- 24. Получить все значения атрибута через NSPredicate в CoreData
- 25. CoreData проникающего типа атрибута - как определить, является ли примитивным
- 26. NSKeyedUnarchiver не расшифровывает объект CLPlacemark из атрибута данных CoreData
- 27. Как обновить значение атрибута в CoreData после его вставки
- 28. Вставка атрибута из свойства (CoreData) с использованием нескольких UIViewControllers
- 29. insert NSDictionary в CoreData
- 30. Содержание приложения CoreData
Спасибо что потратили некоторое время «fluchtpunkt», и указывая способ работы с валютами. Хорошие советы всегда приветствуются и принимаются. Моя основная проблема заключалась в том, как вычислить @Sum «значение» для всех Расходов, которые пользователь может вставить в TableView и сохранить как «Расход» объекта с атрибутом «значение» или «сумма», более правильно. Я не нашел способ вычислить общую сумму атрибута с помощью CoreData. Затем я покажу, что «Total Amount» где-то. Спасибо – Diogo
Спасибо fluchtpunkt, я работал над вашим кодом, пытаясь понять его, а не просто «вставить его». Он работает по своему желанию. – Diogo
Как насчет KVC ?. – Andy