Спасибо за видео. Однако вы не рассказываете про заголовки при get. Мне необходимо передать заголовок Authorization Bearer token, в get запросе. В вашем видео ответ не нашёл 😢.
Скажите, пожалуйста, какой лучше всего библиотекой для запросов пользоваться, чтобы не писать эти монструозные конструкции с проверками? Для веба существует axios, например.
Как вынести полученные данные за пределы closure session.datatask? Почему в этом замыкании не получается присвоить значение переменной объявленной ранее?
Используя многопоточность Вам нужно в основной очереди присвоить уже данные для отображения, а так это находится по умолчанию асинхронно в фоновом потоке.
Используйте примерно такой класс для сетевого вызова: class NetworkService: NetworkServiceProtocol { func getBanks(completion: @escaping (Result) -> Void) { let urlString = urlBanks guard let url = URL(string: urlString) else { return } URLSession.shared.dataTask(with: url) { data, _, error in if let error = error { completion(.failure(error)) return } do { let obj = try JSONDecoder().decode([Bank].self, from: data!) completion(.success(obj)) } catch { completion(.failure(error)) } }.resume() } } а это вызов самого метода в другом классе-презентере: func getBanks() { networkService.getBanks { [weak self] result in guard let self = self else { return } DispatchQueue.main.async { switch result { case .success(let banks): self.banks = banks self.view?.success() case .failure(let error): self.view?.failure(error: error) } } } }
Спасибо за видео! Один из немногих блогов где правильно называют по-английски ! За это просто +100 к карме!
:) принял к карме! Спасибо !
Очень важная и нужная тема, хотелось бы еще. Особенно про новый парсер, робота с потоками и АРІ. Но и за ето спасибо
Хорошо) Спасибо!
Иван - красавчик! Старое видео, но все еще актуальное! По аналогии сделал запрос и получил ответ. Спасибо!
i know Im quite randomly asking but do anybody know a good site to watch new tv shows online ?
@Elon Damon Try FlixZone. You can find it by googling =)
@Forrest Karter yup, I have been using Flixzone for since march myself :D
@Forrest Karter Thanks, signed up and it seems to work =) Appreciate it!!
@Elon Damon No problem :D
Отличное видео, Иван.
Спасибо
Спасибо!
Было бы интересно посмотреть как заливать и скачивать картинки)
Замечательное видео , особенно для новичка ! Однозначно подписка ! =)
Благодарю.
Спасибо за видео. Однако вы не рассказываете про заголовки при get.
Мне необходимо передать заголовок Authorization Bearer token, в get запросе.
В вашем видео ответ не нашёл 😢.
А как вы вызвали подсказку на dataTask'e?)
Очень быстро и понятно. Большое спасибо)
Иван! огромное спасибо!
Скажите, пожалуйста, какой лучше всего библиотекой для запросов пользоваться, чтобы не писать эти монструозные конструкции с проверками? Для веба существует axios, например.
Добрый день!
Смотрите в сторону alamofire.
Спасибо!
Спасибо большое за видео! 👍
Отлично! Давай еще :)
Окей!
Можно таким рбразом добавлять информацию на свои саит?
спасибо
Получается в data хранится тело JSON, а как вытащить значение по ключу?
Добрый день! Вам нужно раскрасить JSON, простой пример мы рассматриваем тут: ruclips.net/video/rBvybLowUKE/видео.html
Как вынести полученные данные за пределы closure session.datatask? Почему в этом замыкании не получается присвоить значение переменной объявленной ранее?
Используя многопоточность Вам нужно в основной очереди присвоить уже данные для отображения, а так это находится по умолчанию асинхронно в фоновом потоке.
@@SwiftBook а у вас есть уроки по этой теме?
Используйте примерно такой класс для сетевого вызова:
class NetworkService: NetworkServiceProtocol {
func getBanks(completion: @escaping (Result) -> Void) {
let urlString = urlBanks
guard let url = URL(string: urlString) else { return }
URLSession.shared.dataTask(with: url) { data, _, error in
if let error = error {
completion(.failure(error))
return
}
do {
let obj = try JSONDecoder().decode([Bank].self, from: data!)
completion(.success(obj))
} catch {
completion(.failure(error))
}
}.resume()
}
}
а это вызов самого метода в другом классе-презентере:
func getBanks() {
networkService.getBanks { [weak self] result in
guard let self = self else { return }
DispatchQueue.main.async {
switch result {
case .success(let banks):
self.banks = banks
self.view?.success()
case .failure(let error):
self.view?.failure(error: error)
}
}
}
}