我正在使用NSFetchedResultsController
在表格视图中显示数据。我有2个对象,Client和Formula。 Client
可以有多个Formulas
,但公式只能有一个Client
,因此是一对多的关系。当我点击Client
中的某个table view cell
时,我想只看到与该客户端相关的公式,但是当我点击其他单元格时,它们包含相同的公式对象,因此它不会过滤。我知道我需要使用谓词来过滤fetch request
,但我不知道从哪里开始。
这是我设置的fetchedResultsController
。
let fetchedResultsController: NSFetchedResultsController<Formula> = {
let fetchRequest: NSFetchRequest<Formula> = Formula.fetchRequest()
let sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
fetchRequest.sortDescriptors = sortDescriptors
return NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: CoreDataStack.context, sectionNameKeyPath: "date", cacheName: nil)
}()
所以在那里,我必须添加fetchRequest.predicate = NSPredicate(format: ...)
,但我不知道在初始化程序中输入什么。
答案 0 :(得分:0)
正如您在问题中提到的,您需要在获取请求中添加谓词以过滤获取的对象。在该谓词中,您需要使用从Formula
到Client
的反向关系。像这样:
fetchRequest.predicate = NSPredicate(format: "parentClient == %@", parentClient)