ios - 即使没有互联网连接也能获得数据响应
问题描述
我在没有互联网连接时测试我的应用程序行为。我除了在用户离线时出现错误。
当禁用互联网连接时,我执行此代码并在控制台中获取“数据可选(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()
}
要调用该函数,请这样做:
getCountries() { result in
switch result {
case .failure(let error):
print(error.localizedDescription)
case .success(let success):
print(success)
}
}
推荐阅读
- excel - OLAP 过滤层次混淆
- php - 将 root 用户名更改为 dlb123 但可以访问 mysql 时 phpMyAdmin 出现 4r03 错误
- html - 无法从默认包中的 servlet 调用 WEB-INF 中的 jsp
- javascript - Javascript 相关问题(运算符和优先级)
- javascript - 计算每 12 个计数的值
- reactjs - 类型“[{},Dispatch<{}>]”缺少类型中的以下属性
- java - 为什么在将我的 java 程序连接到 sql server 时出现此错误
- r - 在R中选择只有一个字符的列
- powershell - 基于注释的帮助不显示 .NOTES 部分中的内容
- php - 为什么不同日期的日期和时间转换不同?