Как получить доступ к значению во вложенной структуре - PullRequest
0 голосов
/ 08 ноября 2018

У меня проблемы с получением определенного значения при вызове 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, чтобы я мог отобразить изображение в виде таблицы, и я подумал, что получу его в своем методе cellForRowAt, используя что-то вроде

let newsStories = storyData[indexPath.row]

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

Однако я не могу этого сделать, я могу получить доступ к newsStories.multimedia, но не дальше, как будто multimedia не имеет никаких свойств.

Есть ли другой способ, которым я могу получить imageUrl?

1 Ответ

0 голосов
/ 08 ноября 2018

[Мультимедиа] - это массив, доступ к нему осуществляется через индекс. Затем вы можете получить к нему доступ с помощью imageUrl.

Например:

cell.storyImageView.cacheImage(urlString: newsStories.multimedia[0].imageUrl)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...