В сущности Shift у меня есть два атрибута startTime и endTime, я хочу взять разницу и затем суммировать по всем извлеченным значениям.
let fetchRequest = NSFetchRequest<NSDictionary>(entityName: "Shift")
fetchRequest.predicate = shiftPredicate
fetchRequest.resultType = .dictionaryResultType
let durationExpression = NSExpressionDescription()
durationExpression.name = "duration"
durationExpression.expression = NSExpression(format: "endTime - startTime")
durationExpression.expressionResultType = .integer16AttributeType
// INSERT A
do { let result = try
managedObjectContext.fetch(fetchRequest)
print("\(result)")
let resultDict = result.first
print("\(String(describing: resultDict?["sumDuration"]))")
} catch let error as NSError {
print ("Could not fetch \(error), \(error.userInfo)")
}
Теперь эта выборка возвращает массив словарей, содержащих [{duration, 3}, {duration, 6}], но я хочу суммировать по всем значениям продолжительности.
Я попробовал следующее на INSERT A
let sumDurationExpression = NSExpressionDescription()
sumDurationExpression.name = "sumDuration"
sumDurationExpression.expression = NSExpression(forFunction: "sum:", arguments: ["duration"])
sumDurationExpression.expressionResultType = .integer16AttributeType
fetchRequest.propertiesToFetch!.append(sumDurationExpression)
Но происходит сбой при отправке нераспознанного селектора, я также пытался
durationExpression.expression = NSExpression(format: "sum: (endTime - startTime")