Сумма элементов Core Data

swift
ios
coredata

#1

Здравствуйте. Вот недавно начал изучение Core Data. Пытаюсь играться с приложением на подобие ToDoIst. Хочу реализовать функцию нахождения суммы чисел что записаные в атрибуте сущности. Просто не могу найти информацию об этом. Пробовал делать через reduce массива но не получается сложить все числа вместе просто выводит по отдельности. Может кто подскажет в какую сторону копать? Также нашел на зарубежном сайте пример где сделано с помощью FetchRequest но пример был для swift 3 и не работал у меня поэтому не смог понять что к чему. Копаюсь с этим уже около недели и нет результата.


#2

А какая ошибка-то? В чем именно проблема? Получить числа или сложить их? И продемонстрируйте проблемный участок кода

reduce не изменяет массив, а создает новый. Или что вы подразумевали под «выводит по отдельности»?

let arr = [1,2,3,4,5]
arr.reduce(0, +) // 15
print(arr) // [1, 2, 3, 4, 5]

#3

Из вашего вороса непонятно, что у вас конкретно не получается: обработать (reduce) полученные данные из CoreData или собственно получить (FetchRequest) данные?


#4

В общем получилось у меня суммировать числа в атрибуте, но работает немного не так как нужно.

func totalSum(){

let context = getContext()
       
       let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Item")
       fetchRequest.returnsObjectsAsFaults = false;
       let results: NSArray = try! context.fetch(fetchRequest) as NSArray

       var totalHoursWorkedSum: Double = 0
       for res in results {
           let totalWorkTimeInHours = (res as AnyObject).value(forKey: "price") as! Double
           totalHoursWorkedSum += totalWorkTimeInHours
       }

       print("Sum = \(totalHoursWorkedSum)")

}

Может подскажите где ошибка?


#5

А как? Как это понять со стороны?