2013-02-03 4 views
0

tout à fait nouveau pour le développement iOS et objectif-c en même temps. J'ai la méthode suivante:accéder à la valeur NSMutableDictionary sans clé?

-(NSMutableArray *)fetchDatabaseJSON{ 
    NSURL *url = [NSURL URLWithString:@"http://www.ios.com/ios/responseScript.php"]; 
    NSError *error = nil; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:&error]; 
    //jsonArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
    //NSLog(@"Array: %@",[jsonArray objectAtIndex:0]); 
    jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
    NSLog(@"Dictionary: %@", jsonDictionary); 
    return jsonArray; 
} 

Maintenant, le NSLog montre ceci:

2013-02-03 19: 15: 37,081 TestConnection [24510: C07] Dictionnaire: ( Bannana, Apple, SomeCheese)

D'après ce que je comprends que tout ce qui est dans le dictionnaire n'a pas de valeur-clé. Comment se peut-il? et comment puis-je le réparer? Je veux être en mesure d'avoir des clés pour faciliter les opérations sur le dictionnaire.

Cordialement,

Répondre

1

JSONObjectWithData peut retourner un NSArray ou NSDictionary, selon les données JSON que vous lui donnez. Si votre chaîne JSON est un tableau, vous aurez un NSArray. Si vos données JSON sont un dictionnaire, vous obtiendrez un NSDictionary.

Convertissez vos données JSON (votre variable data) en chaîne et imprimez-la avec NSLog. Pour convertir NSData à NSString, utiliser quelque chose comme:

NSString *myString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; 

Si vous imprimez et voir un tableau JSON, vous n'avez tout simplement pas un dictionnaire il .. Si vous pouvez modifier le code serveur qui génère le JSON, vous pourriez être en mesure de changer cela. Une autre chose que j'ai remarquée, vous supposez que le conteneur de retour est mutable. Si je ne me trompe pas, vous devez utiliser une option comme NSJSONReadingMutableContainers dans le paramètre options de JSONObjectWithData pour l'obtenir.

Un dernier conseil, si vous voulez vérifier dans le code si vous avez un NSArray (ou NSDictionary), utilisez quelque chose comme:

if ([obj isKindOfClass:[NSArray class]]) {...} 
Questions connexes