2010-12-01 31 views
0

J'essaie de tirer deux valeurs de ce dictionnaire, mais les valeurs que je reçois ont "()" autour d'eux. Des idées à quoi cela cause-t-il?valeurs clés d'un formatage NSDictionary avec "()"

Voici le SERVEROUTPUT:

{"Rows":[{"userid":"1","location":"beach"}]} 

Dictionnaire après JSON:

{ 
    Rows =  (
      { 
     location = beach; 
     userid = 1; 
    } 
); 
} 

Voici ce que je reçois:

location : (
    beach 
) 
user Id : (
    1 
) 

deux l'ID utilisateur et l'emplacement des valeurs clés avoir la "()". Voici le code. Merci beaucoup.

NSString *serverOutput= [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]; 


if(serverOutput > 1){ 

     SBJSON *jsonFF = [[SBJSON new] autorelease]; 
     NSError *error3 = nil; 
     NSDictionary *useridDict= [jsonFF objectWithString:serverOutput error:&error3]; 

     NSLog(@"useridDict: %@",useridDict); 

    idreturn = [[useridDict valueForKey:@"Rows"] valueForKey:@"userid"]; 

    locationreturn = [[useridDict valueForKey:@"Rows"] valueForKey:@"location"]; 

    NSLog(@" user Id : %@", idreturn); 
    NSLog(@" location : %@", locationreturn); 
+0

Comment positionreturn est-il déclaré? Est-ce un NSArray? – Anna

+0

l'idreturn et locationreturns sont NSStrings. Merci –

+0

Il semble que ce soit la décision des valeurs en tant que tableaux, bien que je ne sache pas pourquoi. – Wevah

Répondre

0

Juste pour clarifier ce qui se passe. Lorsque l'analyse syntaxique JSON {} est renvoyée en tant que dictionnaire et [] récupérée en tant que tableau. Nous avons donc useridDict et NSDictionary contenant les données analysées. 'UseridDict' a une clé Rows qui renvoie NSArray

NSArray *useridArray = [useridDict objectForKey:@"Rows"]; 

Notre useridArray a un élément, un NSDictionary

NSDictionary *dict = [useridArray objectAtIndex:0]; 

Cette dict contient les deux touches: location et userid

NSString *location = [dict objectForKey:@"location"]; 
NSInteger userid = [[dict objectForKey:@"userid"] intValue]; 
0

Vous pouvez utiliser comme ça.

idreturn = [[[useridDict valueForKey:@"Rows"] objectAtIndex:0]valueForKey:@"userid"]; 

locationreturn = [[[useridDict valueForKey:@"Rows"] objectAtIndex:0] valueForKey:@"location"];