Настоятельно рекомендуется повторно выбирать элементы с соответствующим дескриптором предиката и сортировки, а не делать это вручную .
Код предполагает, что существует подкласс NSManagedObject Inspection
с отношением item
и сущность, представленная item
, имеет уникальный атрибут name
let sortDescriptor = NSSortDescriptor(key: "dateModified", ascending: false)
let predicate = NSPredicate(format: "item.name == %@ AND markAsDeleted == FALSE", item.name)
let fetchRequest : NSFetchRequest<Inspection> = Inspection.fetchRequest()
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = [sortDescriptor]
do {
let itemInspections = try managedObjectContext.fetch(fetchRequest)
label.text = "Items (\(itemInspections.count))"
} catch { print(error) }
И если вам нужно только количество отфильтрованных элементов, есть еще более эффективный API
let sortDescriptor = NSSortDescriptor(key: "dateModified", ascending: false)
let predicate = NSPredicate(format: "item.name == %@ AND markAsDeleted == FALSE", item.name)
let fetchRequest : NSFetchRequest<Inspection> = Inspection.fetchRequest()
fetchRequest.predicate = predicate
fetchRequest.sortDescriptors = [sortDescriptor]
do {
let numberOfItemInspections = try managedObjectContext.count(for: fetchRequest)
label.text = "Items (\(numberOfItemInspections))"
} catch { print(error) }