• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 当有 2 个部分时,从 CoreData 填充部分中的行数

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:15:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在我的 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap