作者:用户76rmcbq626 | 来源:互联网 | 2022-11-30 13:51
我的应用程序意外启动了一个我以前从未遇到的错误,我无法在网络上找到任何解决方案.我认为这与我的代码无关,但如果有帮助,这里是:
class InterfaceController: WKInterfaceController {
@IBOutlet var tableView: WKInterfaceTable!
final let url = URL(string: "http://...")
private var tasks = [Task]()
override func awake(withContext context: Any?) {
super.awake(withContext: context)
downloadJson()
}
func downloadJson() {
guard let downloadURL = url else { return }
URLSession.shared.dataTask(with: downloadURL) { data, urlResponse, error in
guard let data = data, error == nil, urlResponse != nil else {
print("something is wrong")
return
}
do
{
let decoder = JSONDecoder()
let downloadedTasks = try decoder.decode(Tasks.self, from: data)
self.tasks = downloadedTasks.tasks
print(self.tasks)
} catch {
print("somehting went wrong after downloading")
}
}.resume()
}
}
我在控制台中收到的错误消息是:
2018-11-07 21:34:15.538369+0100 BJwatch WatchKit Extension[1884:84116] Task <82BE34C9-CCAB-4076-8012-CC9FF61AE556>.<1> load failed with error Error Domain=NSURLErrorDomain Code=-2000 "can’t load from network" UserInfo={NSLocalizedDescription=can’t load from network, _NSURLErrorFailingURLSessiOnTaskErrorKey=LocalDataTask <82BE34C9-CCAB-4076-8012-CC9FF61AE556>.<1>, _NSURLErrorRelatedURLSessiOnTaskErrorKey=(
"LocalDataTask <82BE34C9-CCAB-4076-8012-CC9FF61AE556>.<1>"
), NSErrorFailingURLStringKey=http://..., _kCFNetworkErrorCOnditionalRequestKey= {url = http://..., cs = 0x0}, _kCFNetworkErrorCachedRespOnseKey=, NSUnderlyingError=0x7c1eb930 {Error Domain=kCFErrorDomainCFNetwork Code=-2000 "(null)" UserInfo={_kCFNetworkErrorCachedRespOnseKey=, _kCFNetworkErrorCOnditionalRequestKey= {url = http://..., cs = 0x0}}}, NSErrorFailingURLKey=http://...} [-2000]
[BJwatch_WatchKit_Extension.Task, BJwatch_WatchKit_Extension.Task, BJwatch_WatchKit_Extension.Task, BJwatch_WatchKit_Extension.Task]
真实应用中的URL不是"http:// ...".它是一个提供JSON数组的URL,它正在运行.
1> Andreas M..:
NSURLErrorCannotLoadFromNetwork
当任务需要从网络加载时发送此错误,但是"仅从缓存加载"指令阻止此错误.
默认策略为NSURLRequest.CachePolicy.useProtocolCachePolicy
useProtocolCachePolicy:使用协议实现中定义的缓存逻辑(如果有),用于特定的URL加载请求.
要点:如果要进行HTTP或HTTPS字节范围请求,请始终使用NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData策略.
var request = URLRequest(url: URL(string:"http://...")!)
request.cachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
URLSession.shared.dataTask(with: request) {...