NSFetchedResultsController对象提供实体计数

时间:2018-09-06 07:14:09

标签: ios swift core-data nsfetchedresultscontroller

我有一个Core数据,其中一个名为“ Cigarette”的实体具有“ time”属性。在我的表格“视图”中,我必须每天填充每个单元格中的香烟总数。 NSFetchedResultsController该怎么做?

3 个答案:

答案 0 :(得分:1)

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

您还需要修改标准的FRC tableView数据源方法和FRC自己的委托方法,因为您需要为每个“组”(即日期)提供一个单元格,而不是希望每个单元都有一个单元格。

答案 1 :(得分:0)

要获取特定日期的实体,您必须使用NSPredicate来获取期望日期实体并将此谓词应用于NSFetchRequest,您将仅获取该日期实体

答案 2 :(得分:0)

您可以使用fetchedResultsController来获取数据:

obj-c

NSArray *fetchedData = [_fetchedResultsController fetchedObjects];

快速

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

如果您有多个实体,请为每个实体建立一个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];

快速

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