NSURLErrorDomain代码= -2000"无法从网络加载"

T. *_*ter 1 ios swift

我的应用程序意外启动了一个我以前从未遇到的错误,我无法在网络上找到任何解决方案.我认为这与我的代码无关,但如果有帮助,这里是:

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

}
Run Code Online (Sandbox Code Playgroud)

我在控制台中收到的错误消息是:

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=<CFMutableURLRequest 0x7c09bc70 [0x34f528c]> {url = http://..., cs = 0x0}, _kCFNetworkErrorCachedResponseKey=<CFCachedURLResponse 0x7afc2840 [0x34f528c]>, NSUnderlyingError=0x7c1eb930 {Error Domain=kCFErrorDomainCFNetwork Code=-2000 "(null)" UserInfo={_kCFNetworkErrorCachedResponseKey=<CFCachedURLResponse 0x7afc2840 [0x34f528c]>, _kCFNetworkErrorConditionalRequestKey=<CFMutableURLRequest 0x7c09bc70 [0x34f528c]> {url = http://..., cs = 0x0}}}, NSErrorFailingURLKey=http://...} [-2000]
 [BJwatch_WatchKit_Extension.Task, BJwatch_WatchKit_Extension.Task,     BJwatch_WatchKit_Extension.Task, BJwatch_WatchKit_Extension.Task]
Run Code Online (Sandbox Code Playgroud)

真实应用中的URL不是"http:// ...".它是一个提供JSON数组的URL,它正在运行.

And*_*s M 9

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) {...
Run Code Online (Sandbox Code Playgroud)