首页 > 解决方案 > 即使没有互联网连接也能获得数据响应

问题描述

我在没有互联网连接时测试我的应用程序行为。我除了在用户离线时出现错误。

当禁用互联网连接时,我执行此代码并在控制台中获取“数据可选(53161 字节)”输出。

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()
}

那么为什么我在没有连接的情况下得到响应?

谢谢!

标签: iosswiftconnectionresponseurlsession

解决方案


尝试这个:

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)
    }
}

推荐阅读