如何在嵌套结构中访问值

时间:2018-11-08 17:42:55

标签: ios json swift struct

进行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"
    }
}

我正在尝试获取imageUrl结构的Multimedia成员。发出数据请求时,将用var storyData = [Results]()填充数组object.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,以便可以在表格视图中显示该图像,并且我想我可以使用类似{p >

cellForRowAt

但是我无法执行此操作,但是我无法访问let newsStories = storyData[indexPath.row] cell.storyImageView.cacheImage(urlString: newsStories.multimedia.imageUrl) ,就好像newsStories.multimedia没有任何属性一样。

我可以获得multimedia的其他方式吗?

1 个答案:

答案 0 :(得分:2)

[Multimedia]是一个数组,您必须通过索引访问它。然后,您可以使用imageUrl访问它。

例如:

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