我使用Xcode beta6。我创建了一个有Downloader类的应用程序,这就是Downloader类:
class Downloader : NSObject {
private var _connection : NSURLConnection?
private var _downloadedData: NSMutableData?
func getDataFromURLString(urlToRequest: String!, aType: DownloadedDataType) {
_downloadedData = NSMutableData()
var request : NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: urlToRequest), cachePolicy: .ReloadIgnoringLocalCacheData, timeoutInterval: 20.0)
request.setValue("", forHTTPHeaderField: "Accept-Encoding")
self._connection = NSURLConnection(request: request, delegate:self)
}
func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
println("Data expected size: (response.expectedContentLength)")
}
func connectionDidFinishLoading(connection: NSURLConnection!) {
println("finished")
}
func connection(connection: NSURLConnection!, didFailWithError error: NSError!) {
println("error: (error)")
}
func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
_downloadedData?.appendData(data)
}
}
当服务器在带有LAN电缆的网络上时,这个类工作得很好,并获得正确的JSON结果,但当这个服务器通过WiFi连接到同一网络时,我从iOS设备上得到了这个错误:
Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."
但这真的很奇怪,因为如果我把json路径粘贴到浏览器中,我会看到json。。所以只有在iOS设备上无法处理,但我不知道我应该修复什么。。有人能帮我吗?
所以,如果我用来开发的Mac mini在局域网上,而服务器在局域网上的话,一切都很好。但当我的Mac mini在WiFi上,我的服务器在WiFi上时,我会收到这个错误。。。
好吧,我的第一个问题是,您是否尝试过在Objective-C/IOS7中使用相同的逻辑/代码来完成相同的任务?这将给我们一个想法,如果它是Swift、iOS 8中的问题,或者你的代码中的问题。如果您有,请在编辑/更新中发布此代码。
第二个问题:为什么要覆盖accept编码?如果指定了头值,许多服务器都需要一些东西。最好去掉它。
第三个问题:你运行的是什么版本的iOS 8测试版?FWIW,对SO的简单搜索显示了这个问题:错误域=NSURLError域代码=-1005";网络连接丢失"
所以它可能是iOS8测试版中的一个错误。我建议先尝试objective-c,如果它也坏了,转到开发者论坛并发布你的问题,以引起苹果的注意。你可能还想为它打开一个雷达。
我完全解决了这个问题,删除了我的Wi-Fi网络连接,并通过从网络连接列表中选择它并再次提供密码来重新实例化它。请在页面底部查看我的堆栈溢出响应:
NSURLConnection GET请求返回-1005;网络连接丢失";