带索引的NSArray递归搜索

时间:2013-12-12 16:13:03

标签: ios objective-c recursion 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 个答案:

答案 0 :(得分: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;
}