循环 json 数据并将数据添加到 textLabel

Loop through json data and add the data to textLabel

我正在尝试获取返回的所有 json 数据并将其内容添加到集合视图中,其中每个索引位置的内容都添加到其自己的单元格中集合,但是,只创建了一个单元格,它是数组中的第一个索引

This is what it looks like right now

这是我执行请求以获取数据的地方

func fetchSectorData(){
        guard let url = URL(string: "https://financialmodelingprep.com/api/v3/stock/sectors-performance?apikey=\(Api.key)") else {
            fatalError("wrong sector endpoint")
        }
            
        let dataTask = session.dataTask(with: url) { (data, _, error) in
            if error != nil {
                print(error!)
                return
            }
            if let payload = data {
                guard let sectorInfo = try? JSONDecoder().decode(SectorData.self, from: payload) else {
                    print("problem decoding data")
                    return
                }
                self.sectorArray.append(sectorInfo)
            }
            DispatchQueue.main.async {
                self.collectionview.reloadData()
            }
        }
        dataTask.resume()
    }
}

这是我的 collectionView,我在其中循环遍历数据并将其附加到单元格,但是只附加了 1 条数据

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        
        let cell = collectionview.dequeueReusableCell(withReuseIdentifier: "scrollId", for: indexPath) as! SectorCollectionCell
    
        let sectorPayload = sectorArray[indexPath.row].sectorPerformance
        
        for data in sectorPayload {
            cell.sectorName.text = data.sector
            cell.performance.text = data.changesPercentage
        }

        
        return cell
    }

这是我要取回的数据

{
  "sectorPerformance" : [ {
    "sector" : "Aerospace & Defense",
    "changesPercentage" : "0.0241%"
  }, {
    "sector" : "Airlines",
    "changesPercentage" : "-2.0008%"
  }, {
    "sector" : "Auto Components",
    "changesPercentage" : "0.4420%"
  }, {
    "sector" : "Automobiles",
    "changesPercentage" : "-0.7118%"
  }, {
    "sector" : "Banking",
    "changesPercentage" : "-0.1773%"
  } ]
}

您在此循环中每次都覆盖了 sectorNameperformance 标签。因此,标签仅显示 sectorPayload.

中的最后一个值
for data in sectorPayload {
    cell.sectorName.text = data.sector             // overwrites every loop iteration 
    cell.performance.text = data.changesPercentage // overwrites every loop iteration
}

要解决这个问题,这取决于你想做什么。您可以将所有值附加到一个字符串,并让标签显示附加的字符串。

for data in sectorPayload {
    cell.sectorName.text = cell.sectorName.text + " \(data.sector)"
    cell.performance.text = data.changesPercentage + " \(data.sector)"
}

或者,您可能想要生成更多单元格,每个单元格都在每个 sectorPayload 的一个部分中。然后每个部分中的单元格将在 sectorPayload.

中显示 data.sectordata.changesPercentage