Como posso solicitar uma nova tentativa em um NSURLConnection? no meu método connectionDidFinishLoading é possível armazenar e tentar a conexão novamente?
Eu olhei para [início da conexão], mas isso não parecia fazer nada. O objeto de conexão ainda contém a solicitação original?
obrigado
Respostas:
6 para resposta № 1Não é declarado explicitamente, mas ainda assim documentação sugere que NSURLConnection
a instância não se destina a ser reutilizada:
NSURLConnection retém seu delegado quando é inicializado. Ele libera o delegado quando a conexão termina de carregar, falha ou é cancelada.
Se o delegado já foi liberado, não há realmente nenhum ponto em reanimar o objeto de conexão.
0 para resposta № 2
Se eu fosse você, eu olharia para ASIHTTPRequest, que é MUITO mais fácil de usar do que oembutido NSURLConnection business, mas também muito mais featureful. Você pode especificar o número de vezes para tentar novamente, o tempo limite da falha e basicamente todos os aspectos de uma solicitação HTTP.
0 para resposta № 3
Você pode resolver isso mantendo o original NSMutableURLRequest
objeto e criando a conexão novamente, no Swift é parecido com isto:
class MyConnectionHandler {
var request:NSMutableURLRequest?
var connection: NSURLConnection?
var retryCount=0
var maxRetries=2
...
functions to setup the request object, and create a connection
----
func connection(connection: NSURLConnection, didFailWithError error: NSError) {
if(retryCount<maxRetries) {
retryCount++
self.connection=NSURLConnection(request: request!, delegate: self, startImmediately: true)
} else {
<throw a tantrum>
}
}