Objective-C: 'sendSynchronousRequest: returningResponse: error:' está en desuso: primero está en desuso en iOS 9.0

-(NSArray *)deviceCheck:(NSString *)device { NSString *deviceRequestString = [NSString stringWithFormat:@"%@?device=%@",webservice,device]; NSURL *JSONURL = [NSURL URLWithString:deviceRequestString]; NSURLResponse* response = nil; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:JSONURL]; NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; if(data == nil) return nil; NSError *myError; NSArray *tableArray = [[NSArray alloc]initWithArray:[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&myError]]; return tableArray; } 

pero sigo recibiendo esta advertencia:

 sendSynchronousRequest:returningResponse:error:' is deprecated: first deprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h 

en esta línea:

 NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 

Intenté cambiar a lo siguiente:

 NSData* data = [NSURLSession dataTaskWithRequest:request]; 

y

 NSData* data = [NSURLSession dataTaskWithRequest:request returningResponse:&response error:nil]; 

ambos me dieron errores diciendo:

No se conoce el método de class

POR FAVOR AYUDA

Con NSURLSession , su código puede gustarle

 -(void)deviceCheck:(NSString *)device Completetion:(void (^) (NSArray * result,NSError * error))completion{ NSString *deviceRequestString = [NSString stringWithFormat:@"%@?device=%@",webservice,device]; NSURL *JSONURL = [NSURL URLWithString:deviceRequestString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:JSONURL]; NSURLSessionDataTask * dataTask = [ [NSURLSession shanetworkingSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if(data == nil) { completion(nil,error); return; } NSError *myError; NSArray *tableArray = [[NSArray alloc]initWithArray:[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&myError]]; completion(tableArray,myError); } ]; [dataTask resume]; } 

Entonces cuando lo usas

 [self deviceCheck:@"123" Completetion:^(NSArray *result, NSError *error) { //Here use result,and check the error }]; 

Tenga en count que este método es asíncrono

Si realmente necesita la request de synchronization (y probablemente no debería tener eso), puede usar:

 + (instancetype)dataWithContentsOfURL:(NSURL *)aURL options:(NSDataReadingOptions)mask error:(NSError * _Nullable *)errorPtr