Получение ответа с данными даже без подключения к интернету - PullRequest
0 голосов
/ 30 сентября 2019

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

Я выполняю этот код и получаю вывод «data Optional (53161 bytes)» в консоль, когда отключено интернет-соединение.

func getCountries(request: @escaping (Data?, Error?) -> Void) {

    guard let url = url else { print("url is not valid")
        return
    }

    session.dataTask(with: url) { (data, response, error) in

        guard error == nil else {
            request(nil, error)
            return
        }

        print("data \(data)")
        request(data, nil)

    }.resume()
}

Так почему я получаю ответ без подключения?

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2019

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

func getCountries(request: @escaping (Result<Data,Error>) -> Void) {

    guard let url = URL(string: "yourURL") else {
        print("url is not valid")
        return
    }

    let task =  URLSession.shared.dataTask(with: url) { (data, response, error) in

        guard error == nil else {
            request(.failure(error!))
            return
        }
        request(.success(data!))

    }
    task.resume()
}

И чтобы вызвать функцию, сделайте это так:

getCountries() { result in
    switch result {
    case .failure(let error):
        print(error.localizedDescription)
    case .success(let success):
        print(success)
    }
}
...