Swift 4:
Предложение Макса Десятова как расширение Swift:
import Foundation
import CoreData
extension NSFetchedResultsController {
@objc var fetchedObjectsCount: Int {
// Avoid actually fetching the objects. Just count them. Why is there no API like this on NSFetchResultsController?
let count = sections?.reduce(0, { (sum, sectionInfo) -> Int in
return sum + sectionInfo.numberOfObjects
}) ?? 0
return count
}
}
Использование:
let objectCount = fetchedResultsController.fetchedObjectCount
Или сделать это как встроенную процедуру:
// Avoid actually fetching objects. Just count them.
let objectCount = fetchedResultsController.sections?.reduce(0, { $0 + $1.numberOfObjects }) ?? 0
Примечание: @objc
необходим, чтобы избежать этой ошибки компиляции:
Расширение универсального класса Objective C не может получить доступ к универсальным параметрам класса во время выполнения
(См. Как написать расширение для NSFetchedResultsController в Swift 4 )