JSON доступ к нескольким экземплярам внутри массива - PullRequest
0 голосов
/ 13 октября 2018

Я использую JSONDecoder для доступа к данным JSON через API.Внутри этих данных JSON несколько [arrays].Я сталкиваюсь с проблемой доступа к каждому экземпляру, который появляется ключ.

Вот код:

var details = [Details]()
var production = [Production]()

struct Details: Codable {
    let title: String
    let poster_path: String?
    let id: Int?
    let production_companies: [Production]
}

struct Production: Codable {
    let name: String
}


let task = session.dataTask(with: request, completionHandler: { (dataOrNil, response, error) in
        if let data = dataOrNil {
            do { let details = try! JSONDecoder().decode(Details.self, from: data)

let production = details.production_companies
print(production)

 }
        }

    })

Вот что print(production) выводит на консоль:

[Film_Bee.DetailsView.Production (name: "Columbia Pictures "), Film_Bee.DetailsView.Production (название:" Marvel Entertainment "), Film_Bee.DetailsView.Production (название:" Sony Pictures ")]]

То, что я пытаюсь сделать, этодоступ к каждому name в массиве.Я знаю, чтобы получить доступ к первому, который я могу использовать production.first?.name, но если я не уверен, как получить доступ к каждому из них, чтобы поместить в один ярлык.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Прашант очков уже.Я просто добавляю немного, что может вам помочь.

Я полагаю, вы знаете быстрый цикл, например, for или forEach, чтобы увидеть ваш список строк

production.forEach { model in
    print(model.name)
}

Для решения вашей проблемы вам необходимо присоединитьсяваш список строк.Для обновления пользовательского интерфейса используйте DispatchQueue.

let productionList = production.map{$0.name}
let strings = productionList.joined(separator: " ") //use "\n" if you wish new line
print("stringList: \(strings)")
DispatchQueue.main.async() {  
 yourLabel.text = strings
}
0 голосов
/ 13 октября 2018

Попробуйте это

let production = details.production_companies.map{$0.name}

Что такое production_companies Массив.и вы должны перебрать его, используя карту, и получить его имя, которое легко понять, верно?

Не связано, но не используйте try!, вы должны правильно обработать ошибку, используя do try catch block

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...