Как передавать сразу несколько значений с функции одного класса в другой с помощью [weak self] (Swift) Json Api
Я новичок и пытаюсь научиться, хочу попросить у вас совет, решение. Я создал функцию в отдельном классе для Парсинга Json Api, хочу передать ее через @escaping (String)->(). Получается сделать это только если я беру одно какое то значение, например: Город. Но мне также нужно и остальные перенести в другой класс, регион, температуру, страну и так далее. Возможно я просто не знаю тот способ, который знаете вы, заранее благодарю за помощь!
Скриншоты снизу
Вот как я попробовал сделать:
func SendRequest(completion2:@escaping (String)->(),completion: @escaping (String)->()) {
и completion2(RegionLabel ?? "")
Так как я хочу вывести больше полученных результатов, а получается выводить только один без ошибок. Как выводить больше?
Но сразу тут же image3
Ответы (1 шт):
Здесь в замыкании вам нужно передать свою структуру NameRegionCountry
func sendRequest(completion: (NameRegionCountry) -> ()) {
...
let task = NameRegionCountry()
if let name = location["name"] {
task.name = name
}
if let region = location["region"] {
task.region = region
}
if let country = location["country"] {
task.country = country
}
completion(task)
}
ManagerApi.shared.sendRequest { [weak self] data in
self?.nameLabel.text = data.name
self?.countryLabel.text = data.text
self?.regionLabel.text = data.region
}
Не прошенные советы:
- Имя
completion
- означает завершение работы функции и должна один раз, после вызова функцииsendRequest
- Так как в
Swift
принятcameCase
, то имена функции и переменных нужно писать с маленькой буквы, а имена классов, структур и протоколов с большой :)
Удачного изучания!