OStack程序员社区-中国程序员成长平台

标题: ios - 当有 2 个部分时,从 CoreData 填充部分中的行数 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 23:15
标题: ios - 当有 2 个部分时,从 CoreData 填充部分中的行数

在我的 CoreData 中,我有一个 Person 实体,每个 Person 可以有多个(到多个)Statement 实体。语句实体有一个名为 amountOwed 的属性,它是一个小数。现在我的想法是循环所有数量并将它们加起来,如果它们是正数,则将它们添加到正数组中,如果它们是负数,则将它们添加到该数组中。然后使用该数组来计算每个部分需要显示多少个单元格。

我创建了一个 fetchedResultsController 并尝试将它用于 for 循环

for i in 0..<fetchedResultsController.fetchedObjects!.count {

        let person = fetchedResultsController.fetchedObjects?[i]

        let amountTotal = person?.value(forKeyPath: "[email protected]") as? Decimal

        if(amountTotal! <= Decimal(0) )
        {
            postiveCellNumber += 1
            print("\(postiveCellNumber) postive number count")
        }
        else{
            negativeCellNumber += 1
            print("\(negativeCellNumber) negative number count")
        }

    }

然后,我尝试在 numberOfRowsInSection 函数中使用这些数组,如下所示:

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    switch(section) {
    case 0:
        return postiveCellNumber
    case 1:
        return negativeCellNumber

    default :return 0
    }
}

我认为我的 for 循环没有正确循环,因为我收到一个错误提示

no object at index 2 in section at index 0.



Best Answer-推荐答案


如何使用两个不同的查询,一个用于正值,一个用于负值,并带有两个不同的获取结果 Controller ?然后,您可以让 FRC 为您进行迭代和计数。

您将无法使用 FRC 管理部分。你必须自己做。为 sectionNameKeyPath 指定 nil。然后你想要类似的东西

func numberOfSections(in tableView: UITableView) -> Int {
    return 2
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
        return positiveResultsController.fetchedObjects?.count ?? 0
    }
    else {
        return negativeResultsController.fetchedObjects?.count ?? 0
    }
}

或许

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
        let sectionInfo = positiveResultsController.sections![section]
        return sectionInfo.numberOfObjects
    }
    else {
        let sectionInfo = negativeResultsController.sections![section]
        return sectionInfo.numberOfObjects
    }
}

tableView(_:cellForRowAt 的逻辑类似。

关于ios - 当有 2 个部分时,从 CoreData 填充部分中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273826/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4