NSFetchedResultsController 对象给出实体的计数

NSFetchedResultsController object giving counts of entities

我有一个核心数据,其中一个名为 'Cigarette' 的实体具有 'time' 属性。在我的 table 视图中,我必须用每天的香烟总数填充每个单元格。如何使用 NSFetchedResultsController 完成此操作?

要获取特定日期的实体,您必须使用 NSPredicate 获取所需的日期实体并将此 Predicate 应用于 NSFetchRequest,您将仅获取该日期的实体

您可以使用 fetchedResultsController:

获取数据

obj-c

NSArray *fetchedData = [_fetchedResultsController fetchedObjects];

Swift

guard let quotes = fetchedResultsController.fetchedObjects else { return 0 }

如果您有超过 1 个实体,请为每个实体构建一个 fetchrequest。像这样的东西应该会给你所有的对象。

Obj-c

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.entityName inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSError *error;
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error];

Swift

var request = NSFetchRequest()
var entity = NSEntityDescription.entity(forEntityName: entityName, in: managedObjectContext)
request.entity = entity
var error: Error?
var results = try? managedObjectContext.fetch(request)

Apple 有一个示例应用程序,它演示了如何获取 FRC 以按日期对项目进行分组。遗憾的是,这是一个用 Objective-C 编写的旧应用程序,但 广泛展示了如何在 Swift 中实现它。

您还需要修改标准 FRC tableView 数据源方法和 FRC 自己的委托方法,因为您不需要每个项目一个单元格,而是每个 "group"(即日期)一个单元格。