2010-09-30 2 views
0

Следующий код работает отлично:objectForKey строка с «/» разбивает мое приложение

  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...) 

Но если заменить «статью» с «/ код/​​местоположение/статье» аварий приложений. Что дает?? Что мне не хватает?

+0

Привет у меня есть тот же самый вызов с objectForKey: @ "id". У вас есть решение? – 2011-02-05 08:30:18

ответ

2

Если NSDictionary не содержит конкретного элемента, objectForKey: вернет nil, а не [NSNull null].

Итак, если словарь не содержит объект, который вы ищете, вы по существу делаете сравнение, например nil != [NSNull null], которое всегда будет оцениваться как истинный. Это, вероятно, не то, что вы хотите.

(Проверка NSNull означает, что запись есть, но имеет нулевое значение. Это характерно для, например ответов в формате JSON. Я не уверен, если это является общим в вашем сценарии, хотя.)

+0

Спасибо. Даже после того, как вы изменили использование nil вместо [NSNull null], строка, вызывающая сбой, есть « \t \t NSString * mid = [[item objectForKey: @"/common/topic/article "] objectForKey: @ "Я бы"];". Правильно ли этот синтаксис? – Wally

Смежные вопросы