Actualización: Acabo de probar mi formato JSON devuelto desde el servidor usando JSONlint y está bien.error de selector no reconocido con NSJSONSerialization + AFNetworking
Recibo una excepción con NSJSONSerialization en una llamada AFNetworking a un script php que devuelve datos JSON. He analizado las otras preguntas aquí con el mismo problema e intenté con esas soluciones, pero sigo recibiendo el error.
Se estrella en esta línea:
NSError *e = nil;
NSMutableArray *jsonArray =
[NSJSONSerialization JSONObjectWithData: jsonData
options: NSJSONReadingMutableContainers
error: &e];
Error Log:
2012-03-19 18: 10: 41.291 ImageUploader [3538: 207] * de terminación aplicación debido a una excepción no detectada 'NSInvalidArgumentException', razón: '- [__ NSCFArray bytes]: selector no reconocido enviado a la instancia 0x6867430'
Mis datos JSON, cuando llamo al script PHP a través del navegador se parece a esto:
[{ "usuario": "chupete", "camino": "chupete-0a96f9aab5267c8.jpg"," índice ":" 101 "}, {" usuario ":" binky "," ruta ":" binky-9cf844252c28553.jpg "," index ":" 102 "}, {" user ":" binky "," path " : "binky-d6c749d25d33015.jpg", "índice": "103"}]
el NSLog de los datos se ve así:
( { índice = 101; path = "binky-0a96f9aab5267c8.jpg"; user = binky; }, { índice = 102; path = "binky-9cf844252c28553.jpg"; user = binky; }, { índice = 103; path = "binky-d6c749d25d33015.jpg"; user = binky; })
Por último, hago una prueba para asegurarse de que tengo los datos JSON válida:
if ([NSJSONSerialization isValidJSONObject: jsonData]){
NSLog(@"Good JSON \n");
}
Así que no se puede entender que la fuente de mi error es. ¿Un poco de ayuda?
// operación AFNetworking + bloque
AFJSONRequestOperation *operation =
[AFJSONRequestOperation JSONRequestOperationWithRequest:myRequest
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id jsonData) {
NSLog(@"Success JSON data:\n %@ \n", jsonData); //log data
if ([NSJSONSerialization isValidJSONObject: jsonData]){
NSLog(@"Good JSON \n");
}
NSError *e = nil;
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData: jsonData options: NSJSONReadingMutableContainers error: &e];
if (!jsonArray) {
NSLog(@"Error parsing JSON: %@", e);
} else {
for(NSDictionary *item in jsonArray) {
NSLog(@"Item: %@", item);
}
}
[self.navigationController popToRootViewControllerAnimated:YES];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Error: %@", error);
[self.navigationController popToRootViewControllerAnimated:YES];
}];
gracias. Convertir los jsondata entrantes a un trabajo 'NSMutableArray' pero entonces no entiendo por qué necesitaría' NSJSONSerialization' aquí (se usa en muchos ejemplos de código que son como los míos). –