如何过滤具有关系的NSFetchedResultsController-Swift 3

问题描述 投票:0回答:1

我正在使用NSFetchedResultsController在表格视图中显示数据。我有2个对象,客户端和公式。一个Client可以有多个Formulas,但是一个公式只能有一个Client,因此一对多关系。当我点击Client中的某个table view cell时,我只想看到与该客户端相关的公式,但是当我点击其他单元格时,它们包含相同的Formula对象,因此不进行过滤。我知道我需要使用谓词来过滤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: ...),但我不知道在该初始值设定项中输入什么。

swift swift3 nspredicate nsfetchedresultscontroller
1个回答
0
投票

正如您在问题中提到的,您需要在获取请求中添加谓词以过滤获取的对象。在该谓词中,您需要使用从FormulaClient的逆向关系。像这样:

fetchRequest.predicate = NSPredicate(format: "parentClient == %@", parentClient)
© www.soinside.com 2019 - 2024. All rights reserved.