2010-09-30 3 views
0

code suivant fonctionne très bien:chaîne objectForKey avec "/" bloque mon application

  NSDictionary *item; 
      if([arrTesting count] >0) 
       item = [arrTesting objectAtIndex:0]; 

      // The text "article" is what I'm searching for to ensure it exists 
      if([item objectForKey:@"article"] != [NSNull null]) 
      { 
       NSString *mid = [[item objectForKey:@"article"] objectForKey:@"id"]; 
        (more code below...) 

Mais si je remplace "article" avec "/ code/lieu/article" application se bloque. Ce qui donne?? Qu'est-ce que je rate??

+0

Salut j'ai le même problème avec objectForKey: @ "id". Avez-vous une solution? –

Répondre

2

Si un NSDictionary ne contient pas d'élément spécifique, objectForKey: renverra nil et non [NSNull null]. Donc, si le dictionnaire ne contient pas l'objet que vous recherchez, vous faites essentiellement une comparaison comme nil != [NSNull null] qui sera toujours vraie. Ce n'est probablement pas ce que vous voulez.

(Vérification des NSNull signifie que l'entrée est là, mais il a une valeur nulle. Cette situation est commune pour par exemple les réponses JSON. Je ne sais pas s'il est courant dans votre scénario bien.)

+0

Merci. Même après avoir changé pour utiliser nil au lieu de [NSNull null], la ligne qui cause le crash est le "\t \t \t \t \t NSString * mid = [[élément objectForKey: @"/common/topic/article "] objectForKey: @ "id"]; " Cette syntaxe est-elle correcte? – Wally

Questions connexes