如何从父数组创建子数组?

时间:2013-09-13 16:10:15

标签: objective-c arrays parent-child

我的应用使用多个tableViews。

它包含一个具有NSMutableArray的RootViewController,名为mainArray,带有id,parent_id,title,subtitle,description。

在我的SecondTableViewController中,我需要根据parent_id从mainArray创建一个childArray,这样我就可以填充tableviewcells了。

我需要my childArray1只包含每个parent_id = 1 childArray2的id,title,subtitle,以便只包含每个parent_id = 2的id,title,subtitle等等。

是否有一些提示可以做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试使用字典,我想更好

NSDictionary *parent = @{@"id":@(1),@"title":@"Root",@"subtitle":@"my subtitle",@"description":@"something"};
NSDictionary *child1 = @{@"id":@(2),@"title":@"Child 1",@"subtitle":@"lalalala",@"description":@"something",@"parent":parent};
NSDictionary *child2 = @{@"id":@(3),@"title":@"Child 2",@"subtitle":@"lelelele",@"description":@"something",@"parent":child1};

//so now, you can do something like
child2[@"parent"][@"id"]; // 2
child2[@"parent"][@"parent"][@"title"]; // root

答案 1 :(得分:0)

由于您的JSON表明您的NSArray包含NSDictionary对象,因此您可以执行以下操作:

NSPredicate *parentPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
            return evaluatedObject[@"parent_id"] == 1; //set this id to different value to get children of different parent
        }];

NSArray *childArray = [parentArray filteredArrayUsingPredicate:parentPredicate];

您可以将parent_id设置为其他值,以获取parent_id的子数组。