Я извлекаю данные из основных данных. У меня есть атрибут, который является bool, который сохраняется с атрибутом времени. Мне нужно вернуть массив дат, где bool истинно. Я не могу заставить его работать, я либо получаю массив пустых дат, либо он падает.Swift fetchRequest с несколькими sortDescriptors и фильтром Bool
func datesWithCompleteHBI() -> [Date] {
let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
fetchRequest.resultType = .dictionaryResultType
fetchRequest.propertiesToFetch = ["savedTime", "harveyBradshawIndexComplete"]
let timeSort = NSSortDescriptor(key: "savedTime", ascending: false)
let hbiSort = NSSortDescriptor(key: "harveyBradshawIndexComplete", ascending: false)
fetchRequest.sortDescriptors = [timeSort, hbiSort]
let messageKey = true
fetchRequest.predicate = NSPredicate(format: "harveyBradshawIndexSaveLevel = %@", messageKey as CVarArg)
var dates = [Date]()
do {
let results = try managedObjectContext.fetch(fetchRequest) as! [[String:Date]]
dates = results.flatMap { $0["savedTime"]}
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
print("hbi date array \(dates)")
return dates
}
}
Спасибо Я получаю сообщение об ошибке Не могу вызвать 'фильтр' с помощью списка аргументов типа '(([String: Any]) throws -> Bool)' – SashaZ
Я обновил ответ. Фильтрация объектов в предикате является лучшим решением. – vadian
Извините, это не сработало. Спасибо за помощь. Когда я это выясню, я отправлю ответ. – SashaZ