Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 即使没有internet连接,也可以通过数据获取响应_Ios_Swift_Connection_Response_Urlsession - Fatal编程技术网

Ios 即使没有internet连接,也可以通过数据获取响应

Ios 即使没有internet连接,也可以通过数据获取响应,ios,swift,connection,response,urlsession,Ios,Swift,Connection,Response,Urlsession,当没有internet连接时,我正在测试我的应用程序行为。当用户脱机时,Im例外会出现错误 当禁用internet连接时,我执行此代码并在控制台中获得“可选数据(53161字节)”输出 func getCountries(request: @escaping (Data?, Error?) -> Void) { guard let url = url else { print("url is not valid") return } sessio

当没有internet连接时,我正在测试我的应用程序行为。当用户脱机时,Im例外会出现错误

当禁用internet连接时,我执行此代码并在控制台中获得“可选数据(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()
}
那么,为什么我在没有联系的情况下得到回应

谢谢

试试这个:

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

隐藏物打印数据字符串化,可能是一些缓存响应…你是在真实设备上测试还是在模拟器上测试?我使用的是一个关闭wifi的模拟器,所有东西都在真实设备上工作。谢谢
getCountries() { result in
    switch result {
    case .failure(let error):
        print(error.localizedDescription)
    case .success(let success):
        print(success)
    }
}