2015-03-31 2 views
1

Я работаю над новым приложением, написанным быстро, я видел, как это сообщение об ошибке было отправлено спам SO, говоря: Перезапустите симулятор.Swift NSURLConnection мгновенно возвращается с ошибкой 1005

Слишком плохо, кажется, что в моем случае это не ответ, более старое приложение, написанное на объективе 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 **"); 
     } 

    } 

соответствующих слушатели (класс реализует 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-адрес, так как я не могу поделиться ими, я могу гарантировать, что они верны.

Кто-нибудь видит ошибку, вызывающую мои ткани?

+0

1005 сетевое соединение утеряно. Вы уверены, что вы подключены к Интернету? – sasquatch

+0

Приложение polder objectieve c подключается с помощью соединения nsurl просто отлично. Кроме того, использование сафари также работает –

+0

У меня такое ощущение, что сейчас он работает, хотя вчера я даже перезагрузился. Думаю, мне нужно больше времени на то, чтобы очистить проект, кроме того, что он чист и перезагружен. –

ответ

0

После того, как я заплакал много часов, пока я не заснул, не проснулся и не вернулся на работу, он волшебным образом снова работает.

Спасибо, Обама! В любом случае, просто убедитесь, что вы очищаете все данные от xcode, кроме очистки, это может также печально вызвать эти проблемы, а не просто перезапустить симулятор.

0

Ошибка «потеря сети».

Это ошибка, которую вы должны ожидать в любое время, потому что пользователь вашего приложения может потерять свое сетевое соединение в любое время. И он может вернуться в любое время.

Это не в ваших силах, чтобы решить проблему. Вы должны справиться с этим, например, не сбой, а не зависание, когда это произойдет. Кроме того, не в состоянии решить эту проблему.

Старое приложение отлично работает, потому что вы использовали его в другое время, когда сетевое соединение не было потеряно. И кажется, что вместо того, чтобы плакать, вы должны были подумать о том, что происходит. Если ваше сетевое соединение потеряно, вы ничего не можете сделать, кроме ожидания.

И все эти вещи, которые вы пытались, совершенно бессмысленны; ничто не зафиксирует потерянное сетевое соединение. (Ну, в моем доме, убедившись, что никто не пнул кабель, соединяющий маршрутизатор с телефонной розеткой, помог бы).

+0

Я пробовал его более 100 раз, это было не случайно, что у него было что-то, что можно было бы сделать с временными файлами. –

Смежные вопросы