Я работаю над проектом с NSManagedObjects, где каждый объект является пользовательской записью, которая имеет значение и дату. Приложение будет работать в среднем за 7 дней и за 14 дней из значений, которые вводит пользователь. Я уже настроил его для выполнения соответствующих запросов на выборку, суммирования значений и деления на 7 и 14 соответственно. Однако я понимаю, что когда пользователь впервые начнет использовать приложение, эти средние значения будут вводить в заблуждение, поэтому я хотел бы настроить функцию, которая будет оценивать количество дней из последних 7 и 14, которые не имеют любые записи, чтобы я мог вычесть это значение из знаменателя в этих расчетах. Я относительный новичок, и мне трудно понять, как написать эту функцию, поэтому любая помощь будет принята с благодарностью. Заранее спасибо.
Редактировать в ответ на Дрекку:
Код, с которого я работаю, ниже. Я прошу прощения за широкий вопрос, но я не могу понять, с чего начать структурирование циклической функции для того, что я пытаюсь сделать, и я не смог найти какие-либо примеры или аналоги в поиске Я сделал. В основном я извлекаю все значения, введенные за последние семь дней, но я пытаюсь найти способ оценки для дней, когда значения не были введены в пределах диапазона этого запроса на выборку.
func sevenDayFetch() {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Entry")
var calendar = Calendar.current
calendar.timeZone = NSTimeZone.local
let sevenDaysAgo = calendar.date(byAdding: .day, value: -7, to: Date())
let dateFrom = calendar.startOfDay(for: sevenDaysAgo!)
let dateTo = Date()
let fromPredicate = NSPredicate(format: "entryDate > %@", dateFrom as NSDate)
let toPredicate = NSPredicate(format: "entryDate <= %@", dateTo as NSDate)
let sevenDayPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [fromPredicate, toPredicate])
fetchRequest.predicate = sevenDayPredicate
do {
entryArray = try managedContext.fetch(fetchRequest)
var sevenDayArray: [Int] = []
for i in entryArray as [NSManagedObject] {
sevenDayArray.append(i.value(forKey: "Value") as! Int)
}
let sevenDaySum = sevenDayArray.reduce(0, +)
let sevenDayAverage = sevenDaySum/7
sevenDayAverageLabel.text = String(sevenDayAverage)