You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何双TableView场景下skillsTableView未显示全部JSON数据?

问题原因及修复方案

核心错误点

你代码中的numberOfRowsInSection方法存在逻辑错误,直接导致skillsTableView无法显示全部数据:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if tableView == tableView { // 这里的条件恒为true
        return langCellArray.count
    } else {
        return skillsMasterData?.result?.skills?.count ?? 0
    }
}

tableView == tableView是永远成立的判断,无论当前处理的是哪个TableView,都会返回语言列表的行数。这就把skillsTableView的行数错误限制成了语言列表的长度,自然无法显示全部技能数据。

修复代码

将判断条件改为对比当前TableView是否是self.tableView(你的第一个TableView),剩余情况即为skillsTableView:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if tableView == self.tableView {
        return langCellArray.count
    } else {
        return skillsMasterData?.result?.skills?.count ?? 0
    }
}

额外优化建议

  • 给两个TableView设置不同的tag值(比如self.tableView.tag = 1,skillsTableView.tag = 2),通过tag判断区分TableView,代码可读性更强:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch tableView.tag {
    case 1:
        return langCellArray.count
    case 2:
        return skillsMasterData?.result?.skills?.count ?? 0
    default:
        return 0
    }
}
  • 把技能数据缓存为单独的可选数组,避免反复嵌套解包:
private var skillsList: [YourSkillModel]? { // 替换YourSkillModel为你的技能数据模型类
    return skillsMasterData?.result?.skills
}

后续在计算行数和获取单元格数据时直接使用skillsList,代码会更简洁。

内容的提问来源于stack exchange,提问作者Swift

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:50:23