queda que obsoletos obsoleto hacer descontinuados cuando con ios nsurlconnection nsurlsession ios9

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.