2013-12-12 3 views
0

Я пытаюсь найти элемент в массиве по индексуNSArray рекурсивный поиск с индексом

http://content.screencast.com/users/xdozorx/folders/Jing/media/cb5e24cf-9349-4aa2-a886-bfafb96299f5/00000051.png

здесь мой код.

- (NSDictionary *) getItemAtIntex:(int) index inArray:(NSArray *) array 
{ 
    for (NSDictionary *item in array) 
    { 
     if (enumerateIndex == index) 
     { 
      NSLog(@"%@",item[@"comment"]); 
      return item; 
     } 
     else if ([item[@"childs"] count]) 
     { 
      enumerateIndex ++; 
      [self getItemAtIntex:index inArray:item[@"childs"]]; 
     } 
    } 
    return nil; 
} 

Я называю мой метод

enumerateIndex = 0; 
NSDictionary *comment = [self getItemAtIntex:indexPath.row inArray:comments]; 

, например, с индексом 1, в отладить у меня есть два ответа

subGL 1 -> 1 
global 2 

мне нужно в ответ только subGL 1 -> 1

вот мой файл https://www.dropbox.com/s/mvc21a8pl5n6xz3/commenst.json

ответ

1

Вы ничего не делаете с возвращаемым значением рекурсивного вызова. Попробуйте следующее:

- (NSDictionary *) getItemAtIntex:(int) index inArray:(NSArray *) array 
{ 
    for (NSDictionary *item in array) 
    { 
     if (enumerateIndex == index) 
     { 
      NSLog(@"%@",item[@"comment"]); 
      return item; 
     } 
     else if ([item[@"childs"] count]) 
     { 
      enumerateIndex ++; 
      NSDictionary *result = [self getItemAtIntex:index inArray:item[@"childs"]]; 
      if (result) { 
       return result; 
      } 
     } 
    } 
    return nil; 
} 
Смежные вопросы