Analizar la URL del resultado de la API de request de Facebook correctamente

He escrito el siguiente código que envía un object GraphAPI pnetworkingefinido a otro usuario de Facebook en mi aplicación iOS. Esto funciona bien.

-(void)FacebookSendObjectWithIdentifier: (NSString *)objectIdentifier withObjectName:(NSString *)objectName withMessage:(NSString *)message withTitle:(NSString *)title withActionType:(NSString *)actionType runOnComplete:(void (^)(NSDictionary* request))completionBlock{ NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: // Optional parameter for sending request directly to user // with UID. If not specified, the MFS will be invoked //@"RECIPIENT_USER_ID", @"to", // Give the action object request information actionType, @"action_type", objectIdentifier, @"object_id", nil]; [FBWebDialogs presentRequestsDialogModallyWithSession:nil message:message title:title parameters:params handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { if (error) { // Error launching the dialog or sending the request. NSLog(@"Error sending %@ request.", objectName); } else { if (result == FBWebDialogResultDialogNotCompleted) { // User clicked the "x" icon NSLog(@"User canceled %@ request.", objectName); } else { // Handle the send request callback NSDictionary *urlParams = [self parseURLParams:[resultURL query]]; if (![urlParams valueForKey:@"request"]) { // User clicked the Cancel button NSLog(@"User canceled %@ request.", objectName); } else { // User clicked the Send button NSString *requestID = [urlParams valueForKey:@"request"]; NSLog(@"%@ request sent, request id: %@", objectName, requestID); if (completionBlock) completionBlock(urlParams); } } } }]; } 

[self parseURLParams: [resultURL query]]; se implementa en varias páginas de documentation de Facebook de la siguiente manera:

 - (NSDictionary*)parseURLParams:(NSString *)query { NSArray *pairs = [query componentsSeparatedByString:@"&"]; NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; for (NSString *pair in pairs) { NSArray *kv = [pair componentsSeparatedByString:@"="]; NSString *val = [kv[1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; params[kv[0]] = val; } return params; } 

Al volver, el bloque de finalización analiza los urlParams devueltos y los guarda en nuestra database para hacer reference al object enviado a través de Facebook. Sin embargo, esto debería devolver un parámetro de "request" que contiene el ID de request y una matriz "a" que contiene las ID de Facebook de las personas a las que se envió el object. En su lugar, esto devuelve dos campos en la url, "request" que actúa bien, y "to [0]" en lugar de "to" como un NSString en lugar de NSArray, ya que el método proporcionado anteriormente analiza los parameters de url como cadenas en lugar de corresponder objects, lo que convierte la matriz "a" en un "a [0]" NSString.

Estoy buscando una solución mejor para analizar la URL de respuesta devuelta desde Facebook o una mejor manera de enviar un object a través de la API de Facebook. Preferiblemente, la primera opción, ya que este es el único paso faltante para que la implementación se complete.

Gracias.