2015-03-31 94 views
1

我工作在一个新的应用程序写在swift中,我看过这个错误消息垃圾邮件遍及所以说:重新启动模拟器。Swift NSURLConnection立即返回1005错误

在我的情况下,这似乎不是答案,似乎使用完全相同的方法编写的一个较旧的应用程序编写的Objective-C工作正常,但是当我将NSUrlConnection调用到Api(我们的)它似乎不适用于新的应用程序。

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

basicly我有:

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 **"); 
     } 

    } 

相关侦听器(该类实现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; 
} 

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

有没有人看到造成我的组织的错误?

+0

1005网络连接丢失。你确定你已经连接到互联网 – sasquatch 2015-03-31 17:57:52

+0

polder objectieve c app连接使用nsurl连接就好了。使用Safari浏览器的Alsof也可以运行 – 2015-03-31 21:53:07

+0

我觉得它现在可以正常工作,即使我昨天甚至重新启动了,但我想我应该花更多时间在完全清理项目并除去重新启动的情况下进行清理。 – 2015-04-01 06:43:39

回答

0

哭了好几个小时后,我睡着了,醒来后又重新开始工作,它神奇地再次运作。

感谢奥巴马! 无论如何,只要确保清除了除xcode之外的所有数据,这可能会导致这些问题,而不仅仅是重新启动模拟器。

0

错误是“网络连接丢失”。

这是您必须期待的错误,因为您的应用的用户可能随时丢失其网络连接。它可以随时回来。

解决问题并不是你的力量。你必须应付它,例如不会崩溃,而不是挂起,当它发生时。解决问题也没有用户的力量。

较旧的应用程序工作正常,因为您在网络连接没有丢失的不同时间使用它。看起来,不要哭泣,你应该思考发生了什么。如果您的网络连接丢失,除了等待外,您无法做任何事情。

所有这些你一直在尝试的东西都是毫无意义的;没有什么会解决丢失的网络连接。 (好吧,在我的家里,确保没有人踢连接路由器到电话插头的电缆会有帮助)。

+0

我尝试了100多次,我猜这不是偶然,它有一些临时文件。 – 2015-04-03 14:00:26