【问题标题】:How to access a value within a nested struct如何访问嵌套结构中的值
【发布时间】:2018-11-08 17:42:54
【问题描述】:

我在进行 API 调用时无法获取特定值。结构体的设置如下:

struct Status: Decodable {
    let status: String
    let results: [Results]
}

struct Results: Decodable {
    let title: String
    let abstract: String
    let url: String
    let multimedia: [Multimedia]
}

struct Multimedia: Decodable {
    let imageUrl: String

    enum CodingKeys: String, CodingKey {
        case imageUrl = "url"
    }
}

我正在尝试获取Multimedia 结构的imageUrl 成员。当我发出数据请求时,我用object.results 填充数组var storyData = [Results]()。我在viewDidLoad提出数据请求:

    fetchData(url: jsonURL) { (result: FetchResult<Status>) -> (Void) in
        switch result {
        case .success(let object): self.storyData = object.results
            print("\n\nNumber of stories: \(self.storyData.count)\n\nStories: \n\n \(self.storyData)")
        case .failure(let error):
            print("Error decoding JSON: \n\n \(error)")
        }
        DispatchQueue.main.async {
            self.tableView.reloadData()
        }
    }

现在,我正在尝试获取 imageUrl,以便可以在表格视图中显示图像,我想我会使用类似的方法在 cellForRowAt 方法中获取它

let newsStories = storyData[indexPath.row]

cell.storyImageView.cacheImage(urlString: newsStories.multimedia.imageUrl)

但是我不能这样做,我可以访问newsStories.multimedia,但不能再访问,好像multimedia 没有任何属性。

我可以通过其他方式获得imageUrl吗?

【问题讨论】:

    标签: ios json swift struct


    【解决方案1】:

    [Multimedia] 是一个数组,你必须通过索引来访问它。然后就可以通过 imageUrl 访问了。

    例如:

    cell.storyImageView.cacheImage(urlString: newsStories.multimedia[0].imageUrl)
    

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2021-07-22
      • 2023-03-17
      相关资源
      最近更新 更多