通过属性的值而不是.numberOfObjects设置numberOfRowsInSection

时间:2017-09-16 20:46:08

标签: swift core-data nsfetchedresultscontroller

我要做的是在行中显示数据,以使该部分增加。例如,运行1(部分)有2个交付(行),然后运行2(部分)可以有4个交付(行)。现在我正在2个实体中同时保存到核心数据运行和交付,运行有2个属性runid和runtimestamp和Delivery有大约5个填充单元格中的数据。我无法配置nsfetchedresultscontroller以按照我希望的方式显示数据。我是通过使用单独的实体来做到这一点还是我以错误的方式解决这个问题?如果每个部分只有1行,我已成功正确显示所有数据。

这是nsfetchedresult控制器代码,在正确显示行中的所有数据时,它只显示1个部分,即使runco​​unt.runid中有更多数据。

func configureDeliveryResultsController() {
    let runFetchRequest = NSFetchRequest<Delivery>(entityName: "Delivery")
    let primarySortDescriptor = NSSortDescriptor(key: "runcount.runid", ascending: true)
    let secondarySortDescriptor = NSSortDescriptor(key: "timestamp" , ascending: true)
    runFetchRequest.sortDescriptors = [primarySortDescriptor, secondarySortDescriptor]


    self.tipsController = NSFetchedResultsController<Delivery>(fetchRequest: runFetchRequest, managedObjectContext: self.context,
        sectionNameKeyPath: "runcount.runtimestamp",
        cacheName: nil)
        tipsController.delegate = self
}


func numberOfSections(in tableView: UITableView) -> Int {
    if let runs = tipsController.sections {
    return runs.count
    }
    return 2
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if let deliverys = tipsController.sections  {
        let currentSection = deliverys[section]
        return currentSection.numberOfObjects
    }
    return 1
}

0 个答案:

没有答案