Cómo mostrar la request GET en Etiqueta

Mi request de obtención funciona solo en la command-line NSLog. Necesito mostrar datos en Label, pero no funciona.

-(void)getRequest{ NSURLSessionConfiguration *getConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *getSession = [NSURLSession sessionWithConfiguration: getConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]]; NSURL * getUrl = [NSURL URLWithString:@"http://localhost:3000/get"]; NSURLSessionDataTask * getDataTask = [getSession dataTaskWithURL:getUrl completionHandler:^(NSData *getData, NSURLResponse *getResponse, NSError *getError) { if(getError == nil){ NSString * getString = [[NSString alloc] initWithData: getData encoding: NSUTF8StringEncoding]; [self.label setText:getString];// doesn't work! NSLog(@"Data = %@",getString);}// it works!! MainViewController*l=[[MainViewController alloc]init]; [l getRequest]; } ]; [getDataTask resume]; } 

dataTaskWithURL no funciona en el hilo principal y eso es necesario para actualizar su interfaz de usuario.

 if (getError == nil) { NSString * getString = [[NSString alloc] initWithData: getData encoding: NSUTF8StringEncoding]; dispatch_async(dispatch_get_main_queue(), ^{ [self.label setText: getString]; NSLog(@"Data = %@", getString); }); } 

Este código funcionará bien para usted.

También puedes usar:

 [[NSOperationQueue mainQueue] addOperationWithBlock:^{ [self.label setText:getString]; }]; 

Realmente más aquí ¿Por qué debería elegir GCD sobre NSOperation y bloques para aplicaciones de alto nivel?

Si bien no estoy seguro de cuál sería el uso aquí … está utilizando @getString , que creo que es el problema. Probablemente quieras hacer algo como:

 [self.label setText:[NSString stringWithFormat:"Data = %@", getString]; 

Eso debería tener el mismo comportamiento que NSLog .

 dispatch_async(dispatch_get_main_queue(), ^{ [self.label setText:someString]; });