【问题标题】:Getting response with data even without internet connection即使没有互联网连接也能获得数据响应
【发布时间】:2019-09-30 15:54:22
【问题描述】:

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

当禁用互联网连接时,我执行此代码并在控制台中获取“数据可选(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()
}

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

谢谢!

【问题讨论】:

  • 缓存?打印数据字符串化,可能是一些缓存响应...
  • 你是在真机还是模拟器上测试?
  • 我在mac上使用了一个关闭wifi的模拟器
  • 一切都在真实设备上运行。谢谢

标签: ios swift connection response urlsession


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 2016-10-10
    • 2015-01-02
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多