How to put all related self-related objects in a tableview with associated section header for each relationship mapping?
我有一个名为"技能"的实体。 Skill 具有三种不同类型的关系映射 - 更容易、更难和相似。
我想创建一个包含 3 个部分的表格视图 - 对于我碰巧正在查看的特定技能,更容易、更难和类似。我正在尝试确定如何使用 NSFetchedResultsController 创建一个获取请求,以将所有 3 项技能合二为一。这是我的尝试
1 2 3 4 5 6 7 8 9 10 | fileprivate lazy var relatedSkillsFetchedResultsController: NSFetchedResultsController<Skill> = { let appDelegate = UIApplication.shared.delegate as? AppDelegate let managedContext = appDelegate?.persistentContainer.viewContext let request: NSFetchRequest<Skill> = NSFetchRequest(entityName:"Skill") request.predicate = NSPredicate(format:"%@ IN self.easier OR %@ IN self.harder OR %@ IN self.similar", skill!,skill!,skill!) let skillFetchedResultsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: managedContext!, sectionNameKeyPath: #keyPath(skill.relationshipFetchName), cacheName: nil) return skillFetchedResultsController }() |
我在想 - 因为更容易是更难的倒数,更难的倒数是更容易的倒数,相似是相似的倒数......我可以单独获取原始文件...然后使用谓词获取所有技能主要技能是那些更难或更容易或相似的技能。
这听起来像是正确的做法吗?
我也不知道如何设置sectionNameKeyPath。它基本上对应于它匹配的三个 NSPredicate OR 中的哪一个?
配置 FRC 的困难不在于找到
在您的情况下,我很想只创建一个从 Skill 到自身 (
然后您可以使用谓词仅选择与您选择的技能相关的技能:
1 | NSPredicate(format:"ANY relatedSkills == %@", chosenSkill) |
并添加一个基于
更新
嗯,经过一夜的思考,我意识到我错了。在上述场景中,