Utilizando AFJSONRequestOperation

Estoy intentando get algunos datos de un service web que sirve JSON. Pero no tengo idea de qué salió mal en mi código. Parece tan simple pero no pude get ningún dato.

Este es el codigo:

NSURLRequest *request = [NSURLRequest requestWithURL:URL]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { DumpDic = (NSDictionary*)[JSON valueForKeyPath:@"description"] ; } failure:nil ]; [operation start]; AboutTXT = [DumpDic objectForKey:@"description"]; 

Aquí está la URL de JSON .

EDITAR

JSON desde la URL:

 { "clazz":"AboutList", "description":{ "clazz":"DescriptionContent", "description":"ASTRO Holdings Sdn. Bhd. (AHSB) Group operates through two holding companies – ASTRO Overseas Limited (AOL) which owns the portfolio of regional investments and ASTRO Malaysia Holdings Sdn Bhd (AMH / ASTRO) for the Malaysian business, which was privatized in 2010 and is currently owned by Usaha Tegas Sdn Bhd/its affiliates, and Khazanah Nasional Berhad." }, "id":{ "inc":-1096690569, "machine":1178249826, "new":false, "time":1339660115000, "timeSecond":1339660115 }, "refKey":"AboutList" } 

¿Se está conectando con éxito al server, se llama el bloque de éxito?

Rellene el bloque de falla y NSLog el NSError devuelto por el bloque de falla:

 failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { NSLog(@"%@", [error userInfo]); } 

También tengo un consejo más, recomiendo build la NSURLRequest con AFHTTPClient de AFNetwork, ayuda con varias cosas y en general hace que las cosas sean más simples. Establece la URL base y luego le asigna una ruta para agregarla a esa base. Algo como esto:

 AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:address]; [httpClient setParameterEncoding:AFJSONParameterEncoding]; NSMutableURLRequest *jsonRequest = [httpClient requestWithMethod:@"POST" path:@"events" parameters:dict]; 

Además, en lugar de usar valueForKeyPath, puedo sugerirle que simplemente haga un objectForKey:

 [JSON objectForKey:@"description"]; 

Además, no debería tener acceso a DumpDic allí:

 [operation start]; AboutTXT = [DumpDic objectForKey:@"description"]; 

Es una llamada asincrónica, por lo que una vez que la operación haya comenzado, lo más probable es que se tenga acceso a DumpDic antes de que se le asignen los datos del server. Entonces, está accediendo a una key que probablemente aún no existe.

Esto debería hacerse en el bloque de éxito o falla. Esos bloques se llaman una vez que la connection ha finalizado y los datos están listos para ser utilizados.

Por lo tanto, debería parecerse más a esto:

 AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { DumpDic = [JSON objectFor:@"description"]; AboutTXT = [DumpDic objectForKey:@"description"]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { NSLog(@"%@", [error userInfo]); }]; [operation start];