进行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
的其他方式吗?
答案 0 :(得分:2)
[Multimedia]是一个数组,您必须通过索引访问它。然后,您可以使用imageUrl访问它。
例如:
cell.storyImageView.cacheImage(urlString: newsStories.multimedia[0].imageUrl)