Con AFNetworking, ¿cómo puedo leer el post de error que figura en request.responseString?

NSLog(@"%@", request.responseString); 

Esto me da salida de {"errors":{"email":["is already taken"]}} .

Me gustaría save el correo electrónico y la cadena de posts "is already taken" en una cadena para mostrar en una alerta. ¿Cómo puedo acceder a esos dos elementos en dos cadenas?

La cadena de respuesta es la salida en bruto del server. En este caso está codificado JSON. Puede usar una de las classs específicas de AFNetworking JSON (es decir, AFJSONRequestOperation ) para get la respuesta como un object JSON, o analizarla usted mismo utilizando NSJSONSerialization . Sugeriría usar AFJSONRequestOperation .

  NSData *data = [request.responseString dataUsingEncoding:NSUTF8StringEncoding]; id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSString *str = [[json objectForkey:@"errors"] objectForKey:@"email"][0]; 

Utilicé lo siguiente, parece un poco más robusto:

 [requestOperation setCompletionBlockWithSuccess:success failure:^(AFHTTPRequestOperation *operation, NSError *error) { id response = error.userInfo; if (response && [response isKindOfClass:[NSDictionary class]]) { NSDictionary *responseDictionary = (NSDictionary *)response; // AFNetworking hides the actual error response under this key if ([responseDictionary valueForKey:NSLocalizedRecoverySuggestionErrorKey]) { id suggestedRecovery = [responseDictionary valueForKey:NSLocalizedRecoverySuggestionErrorKey]; if ([suggestedRecovery isKindOfClass:[NSString class]]) { // Try to json decode string id json = [NSJSONSerialization JSONObjectWithData:[suggestedRecovery dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; if (json && [json isKindOfClass:[NSDictionary class]]) { responseDictionary = json; } } } // .. extract error message out of responseDictionary } }]; 
  NSData *responseData = [[error userInfo] objectForKey:@"data"]; if ([responseData length] > 0) { NSString *str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"%@", str); }