使用一个 NSFetchedResultController 获取多个实体及其之间的关系

Fetch multiple entities with relation between them with one NSFetchedResultController

我有基础 class Worker 和子 classes EmployeeBookkeeperDirector 以及它们的实体 xcdatamodeld。 现在我想使用 NSFetchedResultController 将它们提取到 tableView 中,以便每个部分中的每个实体。 我不知道如何用单个 frc 做到这一点。 任何帮助。

一个NSFetchedResultsController一次只能与一个实体一起工作。这对你来说没问题,因为你的 类 从工作实体继承,但你无法提供可以确定将用于这些部分的子类型的键路径。我建议的解决方案是向 Worker 实体添加一个类型属性,它可以像 Int 一样简单,然后在每个子类中将初始化期间的值设置为每个子类的不同值类型。例如。

directorInstance.type = 1

...

employeeInstatnce.type = 2

然后定义你的 NSFetchedResultsController:

var fetchRequest = NSFetchRequest(entityName: "Worker")
fetchRequest.predicate = NSPredicate(format: "lastName contains[cd] %@", nameSearchTerm)
var frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: "type", cacheName: nil)