как проверить состояние проанализированных элементов в iphone - PullRequest
0 голосов
/ 19 апреля 2011

из анализа Json в моем проекте я получаю эти элементы ...

выполнение инструкции: -

NSArray *feed3 = (NSArray *)[feed valueForKey:@"type"];  
NSLog(@" %@",feed3);

в консоли я получаю это

(статус,
фото,
ссылка,
видео)

Теперь я хочу проверить состояние этих элементов ..

как

if(type==staus){  
//do some thing  
} 

как это сделать в xcode?

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Я предполагаю, что feed3 - это объект, возвращаемый анализатором JSON после анализа данных JSON, которые вы указали в другом вопросе.В этом случае:

* the top level object is an array
* every element in the array is an object/dictionary representing news
* this object/dictionary contains the following keys:
  * application (object/dictionary with two keys: id, name)
    * id (number)
    * name (string)
  * created_time (string)
  * from (object/dictionary with two keys: id, name)
    * id (number)
    * name (string)
  * icon (string)
  * id (string)
  * likes (object/dictionary with two keys: count, data)
    * count (number)
    * data (array)
      * every element in the array is an object/dictionary
      * this object/dictionary has two keys (id, name)
        * id (number)
        * name (string)
  * link (string)
  * name (string)
  * picture (string)
  * properties (array of objects/dictionaries)
  * type (string)
  * updated_time (string)

При анализе данных JSON жизненно важно понять, как организованы данные.Я предлагаю вам всегда делать вышеописанное всякий раз, когда вам нужно проанализировать JSON.

Так как вы заинтересованы в 'type', вам нужно следовать по этому пути:

  • пройти верхний уровеньмассив новостей
    • каждый элемент в массиве является объектом / словарем
      • этот объект / словарь имеет ключ с именем 'type'

Следующий код должен помочь:

for (NSDictionary *news in feed3) {
    NSString *type = [news objectForKey:@"type"];

    if ([type isEqualToString:@"status"]) {
       …
    }
    else if ([type isEqualToString:@"photo"]) { 
       …
    }
    else if ([type isEqualToString:@"link"]) { 
       …
    }
    else if ([type isEqualToString:@"video"]) { 
       …
    }
}

Обратите внимание, что, как правило, вы должны использовать -objectForKey: вместо -valueForKey::

  • -objectForKey: - это метод, объявленный в NSDictionary, и он используется для получения объекта, хранящегося в словаре, по соответствующему ключу.
  • -valueForKey: - это метод KVC и служит для другой цели.В частности, он может возвращать массив, когда вы его не ожидаете!
0 голосов
/ 19 апреля 2011

Проверьте ниже

for(int index = 0 ; index < [feed3 count] ; index++)
{
    NSString* tempString = [feed3 objectAtIndex:index];

    if([tempString isEqualToString:@"status"]) 
    {
      //Get value for status from value array
    }
    else if([tempString isEqualToString:@"photo"]) 
    {
      //Get value for photo from value array
    }
    else if([tempString isEqualToString:@"link"]) 
    {
      //Get value for link from value array
    }
    else if([tempString isEqualToString:@"video"]) 
    {
      //Get value for video from value array
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...