首页 文章

FetchedResultsController和自定义 Headers 部分的数据

提问于
浏览
1

我正在使用带有sectionNameKeyPath的fetchedResultsController,如下所示 .

let fetchedResultsController = NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:self.managedObjectContext,sectionNameKeyPath:“relName.APropertyName”,cacheName:nil)

节名称键是与父表的关系,以及它与父表中的属性名称之一的关系 .

我有一个自定义节头,通过覆盖下面的func tableView(tableView:UITableView,viewForHeaderInSection节:Int) - > UIView?

在这个 Headers 中,我想访问父实体及其少数其他属性(不仅仅是sectionNameKeyPath中提到的属性)

我没有使用属性“APropertyName”在父实体上强制执行任何唯一性 .

当我为该部分编写自定义标头时,我想查询父实体 . 我该如何实现这一目标?

谢谢

1 回答

  • 2

    我使用了与父和子的一对多关系,并在声明fetchedResultsController时使用“objectID”作为sectionNameKeyPath .

    下面是fetchedResultsController的减速度 .

    let fetchRequest = NSFetchRequest(entityName: "Child")
        let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "relParent.objectID", cacheName: nil)
    

    一旦提取完成并准备好在单元格上显示 Headers 信息,我就使用了fetchedResultsController.sections?[section] .objects属性来遍历父节点 . 下面是呈现自定义 Headers 单元格的代码 .

    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    
        let  headerCell = tableView.dequeueReusableCellWithIdentifier("headerCell") as? ChildEntityHeaderCell
        if let cell = headerCell {
    
            if  let sectionData = fetchedResultsController.sections?[section] {
                if sectionData.objects != nil && sectionData.objects!.count > 0 {
                   if  let child = sectionData.objects?[0] as? ChildEntity , parent = child.relChild // child entity has inverse relationship with the parent [ two way relationship] 
                   {
                    if let name = parent.PropertyA {
                      cell.LabelField.text = name
    
                    }
    
    
                    }
                }
    
            }
    
        }
        return headerCell
    }
    

相关问题