que - NSURLConnection obsoleto en iOS9
iphone obsoletos 2018 (1)
Ahora tienes que usar NSURLSession
Ejemplo (GET):
-(void)placeGetRequest:(NSString *)action withHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))ourBlock {
NSString *urlString = [NSString stringWithFormat:@"%@/%@", URL_API, action];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:ourBlock] resume];
}
Ahora deberá llamar a ese método con una acción (o su URL completa si lo prefiere) y el bloqueo que se ejecutará cuando vuelva la llamada a la API.
[self placeGetRequest:@"action" withHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// your code
}];
Dentro de ese bloque, recibirá un NSData
con los datos de respuesta y NSURLResponse
con la respuesta HTTP. Así que ahora, puedes poner tu código allí:
NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
documentsURL = [documentsURL URLByAppendingPathComponent:@"localFile.pdf"];
[data writeToURL:documentsURL atomically:YES];
Diferencia principal entre NSURLSession y NSURLConnection
NSURLConnection: si tenemos una conexión abierta con NSURLConnection y el sistema interrumpe nuestra aplicación, cuando nuestra aplicación pasa al modo de fondo, todo lo que hemos recibido o enviado se perdió.
NSURLSession: resuelva este problema y también nos dé las descargas fuera de proceso. Gestiona el proceso de conexión incluso cuando no tenemos acceso. Necesitará utilizar la
application:handleEventsForBackgroundURLSession:completionHandler
en su AppDelegate
Por lo tanto, con el uso de NSURLSession, no necesita administrar ni verificar su conexión a Internet porque OS lo hace por usted.
Quiero descargar un archivo con un NSURLRequest
y guardarlo pero en línea con el
NSData * data = ...
ocurre un error.
NSURL *Urlstring = [NSURL URLWithString:@"http://yourdomain.com/yourfile.pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL: Urlstring];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
documentsURL = [documentsURL URLByAppendingPathComponent:@"localFile.pdf"];
[data writeToURL:documentsURL atomically:YES];
El mensaje de advertencia es que debo usar NSURLSession dataTaskwithrequest
"porque sendSynchronousRequest
está en desuso en iOS 9 pero eso no funciona. Espero que alguien pueda ayudarme.