【问题标题】:index out of range when trying to load image url from json data尝试从 json 数据加载图像 url 时索引超出范围
【发布时间】:2020-09-21 04:57:46
【问题描述】:

我正在尝试将数据从 NYTime Articles 搜索 API 加载到 UITableView。我可以很好地加载文本(标题,摘要),但是我在加载图像 url 时遇到了一些麻烦,基本上需要访问嵌套的 json。

这是使用“pelosi”关键字的JSON Data,这是API doc

这是我设置的模型

class Response: Mappable {
    var docs = [Docs]()
    ...
}
class Docs: Mappable {
    ...
    var multimedia = [Multimedia]()
    var headline : Headline?
    ...
}
class Multimedia: Mappable {
    ...
    var url: String?
    ...
}

我将数据传递给:

var docResult: [Docs] = []

这是我的numberOfRows

 return docResult.count

尝试使用 kingfisher 将图像加载到每个单元格中,但出现 Index out of range 错误:

var cellResponse: Docs!
let imgUrl = URL(string: "https://static01.nyt.com/\(cellResponse.multimedia[0].url)!")
docImg.kf.setImage(with: imgUrl)

我要做的是检索单个项目(多媒体数组中第一个项目的 url)。有人可以为此提供解决方案吗?谢谢!

编辑: 这是我的cellForRowAt

cell.cellResponse = docResult[indexPath.row]

【问题讨论】:

  • 您在哪一行得到错误?
  • 我遇到了错误:let imgUrl = ...
  • 谢谢。那么有没有办法解决这个问题?
  • 如果您在这一行中遇到此崩溃,则 multimedia 为空。你必须检查一下。
  • 没有我用来加载图像的代码在一个单独的 uitableviewcell 类中

标签: ios arrays json swift uitableview


【解决方案1】:

如果您在此行中遇到此崩溃,则 multimedia 为空。你必须检查一下

if let multimediaURL = cellResponse.multimedia.first?.url,
   let imgUrl = URL(string: "https://static01.nyt.com/\(multimediaURL)") {
       docImg.kf.setImage(with: imgUrl)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多