Swift NSURLConnection returns 立即出现 1005 错误

Swift NSURLConnection returns instantly with a 1005 error

我正在开发一个用 swift 编写的新应用程序,我看到这条错误消息到处都是,所以说:重新启动模拟器。

太糟糕了,在我的情况下这似乎不是答案,用 objective-C 编写的旧应用程序似乎使用完全相同的方法确实工作正常,但是当我对 NSUrlConnection 调用Api(我们的)它似乎不适用于新应用程序。

响应是一个正确的 200,带有一些 json 数据,没有重定向它在我同时开发的 Android 应用程序上工作正常。

基本上我有:

func getRequest() -> NSMutableURLRequest {
        let request = NSMutableURLRequest(URL: NSURL(string: package.fullPath)!)
        request.HTTPMethod = package.apiMethod.description;
        request.HTTPBody = "hi".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
        return request;
    }

    func execute() {
        conn = NSURLConnection(request: getRequest(), delegate: self);
        if let c = conn {
            Debug.log("** api-connection-start **");
        }

    }

相关监听器(class 实现 NSURLConnectionDataDelegate):

func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
    Debug.log("** api-recieved-url-response? **")
    let httpResponse = response as NSHTTPURLResponse
    statusCode = httpResponse.statusCode
}

func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
    Debug.log("** api-recieving-data **")
    self.responseData.appendData(data)
}

func connection(connection: NSURLConnection, didFailWithError error: NSError) {
    Debug.log("** api-fail-with-error **")
    ErrorClass.message(error)
    if let responseListener = listener {
        responseListener.onError(package, error:error)
    }
}

我在所有这些辅助方法上都有断点,只有 didFailWith 错误会立即调用,错误包含:

2015-03-31 16:58:29.853 myappname[537:4136] {
    NSErrorFailingURLKey = "http://xxxxxxxx/valid/api/call";
    NSErrorFailingURLStringKey = "http://xxxxxxxx/valid/api/call";
    NSLocalizedDescription = "The network connection was lost.";
    NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1005 \"The network connection was lost.\" UserInfo=0x7fdf3bc465d0 {NSErrorFailingURLStringKey=http://xxxxxxxx/valid/api/call, NSErrorFailingURLKey=http://xxxxxxxx/valid/api/call, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4, NSLocalizedDescription=The network connection was lost.}";
    "_kCFStreamErrorCodeKey" = "-4";
    "_kCFStreamErrorDomainKey" = 4;
}

显然我替换了公司名称和确切的名称url,因为我不能分享这些,但我可以保证这些是正确的。

有没有人看出我的纸巾有误?

哭了好几个小时直到我睡着,然后醒来又回到工作中,它又神奇地起作用了。

谢谢奥巴马! 无论如何,除了清理之外,请确保从 xcode 中清除所有数据,很遗憾,这也可能导致这些问题,而不仅仅是重新启动模拟器。

错误是"network connection lost"。

这是一个您必须随时预料到的错误,因为您的应用程序的用户可能随时失去他们的网络连接。它可以随时回来。

您无权解决该问题。你必须应对它,例如在它发生时不要崩溃,也不要挂起。用户也无权解决问题。

旧版应用运行良好,因为您在网络连接未丢失的不同时间使用过它。似乎你不应该哭,而应该想想发生了什么。如果您的网络连接丢失,除了等待之外您无能为力。

而你一直在尝试的所有这些事情都是毫无意义的;没有什么可以修复丢失的网络连接。 (好吧,在我家确保没有人踢到连接路由器和 phone 插头的电缆会有所帮助)。