首页 > 解决方案 > Swift Tableview 单元格按钮图像根据 tableview 数据更改

问题描述

我正在尝试解析 JSON 并在 tableview 数组中附加 JSON 响应值。在下面的响应subcategory中,我得到了一些对象的值,但其中一些对象我得到了空值。

{
    "category": [
    {
    "id": 0,
    "subcategory": [   //Table cell button need to show green color
    {
    "subcategory_id": 10
    }
    ]
    },
    {
    "id": 0,
    "subcategory": null //Table cell button need to show red color
    }
    ]
}
  1. 我需要将值附加到数组like : [10, null,....]中。如果子类别 null 意味着我需要存储 null 否则它的值。

  2. 应用于单元格后,如果值为空需要更改单元格按钮图像。

我尽力解决超出范围的问题,但在上述情况下我没有得到很好的结果。

这是我的代码

 if indexPath.row < id.count {
            cell.accessibilityValue = String(id[indexPath.row]) // If the cell.accessibilityValue not null then need to change cell button image.
        }
        cell.name_Label.text = name[indexPath.row]
        cell.city_Label.text = city[indexPath.row]

从 JSON 追加的数组self.id.append(items)。我得到了输出like [10],但实际结果应该是[10,null]. 数组的长度不正确,如果数据为 null 或 nil,我需要数据为“null”,因为我通过索引获取值,并且每个索引都知道为 null 或具有值,但它必须存在

标签: iosjsonswifttableview

解决方案


  1. id应该是一个数组optional Int
  2. subcategory_id应该optional Int

    var subcategory_id: Int?
    var id: [Int?] = []
    
    if let subCat = subcategory_id {
       id.append(subCat)
    } 
     else {
            id.append(nil) // id=[nil]
          }
    

    在你的 cellForAtRow 重载

    idoptional Int( Int?) 的数组,你必须解开它

    cell.id_Label.text = id[indexPath.row]!
    

    或者

    if let i = id[indexPath.row] {
      cell.id_Label.text = "\(i)"
    }
    else { 
          print("id is nil")
        }
    

推荐阅读