我在 iPhone 应用程序中使用 NSFetchedResultsController,我想知道是否有一些简单的方法可以获取所有部分中返回的总行数。
与其获取 [[fetchedResultsController section] 计数],然后遍历每个部分以获取其计数,是否可以在一行中完成?
谢谢!
我在 iPhone 应用程序中使用 NSFetchedResultsController,我想知道是否有一些简单的方法可以获取所有部分中返回的总行数。
与其获取 [[fetchedResultsController section] 计数],然后遍历每个部分以获取其计数,是否可以在一行中完成?
谢谢!
此行返回获取的对象的总数:
[fetchedResultsController.fetchedObjects count]
这个怎么样?
[fetchedResultsController.sections.valueForKeyPath: @"@sum.numberOfObjects"];
这根本不会触及获取的对象,因此保证不会出错。
迅速。
fetchedResultsController.fetchedObjects?.count
斯威夫特 4:
Max Desiatov 作为 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 类的扩展无法在运行时访问该类的泛型参数