gpt4 book ai didi

ios - 即使值的数量与行数匹配,索引也会超出范围错误

转载 作者:行者123 更新时间:2023-11-30 11:01:14 24 4
gpt4 key购买 nike

我正在尝试将一些图像设置为表格 View 中的 ImageView ,并且我将行数设置为returnkeys.count,打印后确认为5 ,这是完美的。

现在,在 cellForRowAt 中,我获取数组中的images,然后尝试将图像设置为单元格的 ImageView 。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "stockCell", for: indexPath) as! StockCell

let stock = stockData[keys[indexPath.row]]!

var images = [String]()
stock.news.forEach { images.append($0.image) }
print("\n\nNumber of Images: \(images.count)\n\n\n")

if let companyImageUrl = URL(string: images[indexPath.row]) {
ImageService.getImage(url: companyImageUrl) { (image) in
cell.companyLogoImageView.image = image
}
}

return cell
}
}

我在那里放置了一条打印语句来打印images.count(应该是5),但是控制台显示2,然后5(x3),然后再次2 - 这导致了大概是索引超出范围错误,应该是 5 时却看到了 2:

enter image description here

为什么 images.count 在第一个和最后一个位置显示 2,而在其余位置显示 5

编辑:其余代码

获取数据(在viewDidLoad中):

    fetchData(url: stockApiUrl) { (result: FetchResult<[String:Stock]>) -> (Void) in
switch result {
case .success(let object):
self.stockData = object
self.keys = Array(object.keys)
print("stockData: \n\n\(self.stockData)")
case .failure(let error):
print("Error decoding JSON: \n\n\(error)")
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}

数据设置为字典,并使用单独的键数组:

var stockData = [String:Stock]()
var keys = [String]()

解码 JSON 的结构:

struct Welcome: Decodable {
let aapl, fb, msft, tsla, goog: Stock

enum CodingKeys: String, CodingKey {
case aapl = "AAPL"
case fb = "FB"
case msft = "MSFT"
case tsla = "TSLA"
case goog = "GOOG"
}
}

struct Stock: Decodable {
let quote: Quote
let news: [News]
}

struct Quote: Decodable {
let symbol: String
let companyName: String
let latestPrice: Double
}

struct News: Decodable {
let url: String
let image: String
}

最佳答案

添加另一个打印内容并确保每行的新闻数量也不同。然后找出为什么不同。

stock.news.forEach { images.append($0.image) }
print("\n\nNumber of Images: \(images.count)\n\n\n")
print("\n\nNumber of stock.news: \(stock.news.count)\n\n\n")

关于ios - 即使值的数量与行数匹配,索引也会超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com