下面的迭代方法就是创建树,树中的父节点和子节点的关系是:子节点的parentID是父节点的ID。
迭代方法特点:
1.方法本身调用自己
2.调用迭代方法时传的参数不同
3.迭代方法中必须存在if语句,用来终止迭代(if ([gp.parentID isEqualToNumber:[NSNumber numberWithInt:pid]])),满足条件继续调用,否则退出。
- (NSArray *)generateData
{
if ([dataArray count]) {
NSArray *nodeArray = dataArray[1];
Group *rootGP = dataArray[2];
BDDynamicTreeNode *root = [[BDDynamicTreeNode alloc] init];
root.originX = 20.f;
root.isDepartment = YES;
root.fatherNodeId = nil;
root.isOpen = YES;
root.nodeId = [NSString stringWithFormat:@"%@",rootGP.ID] ;
root.name = rootGP.name;
[arr addObject:root];
[self getTreeData:arr nodeData:nodeArray Deep:1 ParentID:[rootGP.ID intValue]];//迭代方法
}
}
-(void) getTreeData:(NSMutableArray *)arr nodeData:(NSArray *)nodeArray Deep:( int) deep ParentID:(int) pid{
for (int i =0; i<[nodeArray count]; i++) {
Group *gp = nodeArray[i];
//if (gp.parentID==[NSNumber numberWithInt:pid])
if ([gp.parentID isEqualToNumber:[NSNumber numberWithInt:pid]])//当前子节点的parentID=父节点的ID,调用下面的迭代方法
{
BDDynamicTreeNode *node = [[BDDynamicTreeNode alloc] init];
node.originX = 20.f+(deep*10);
node.isDepartment = YES;
node.fatherNodeId = [NSString stringWithFormat:@"%@",gp.parentID];
node.nodeId =[NSString stringWithFormat:@"%@",gp.ID] ;
node.name = gp.name;
node.isOpen = YES;
[arr addObject:node];
[self getTreeData:arr nodeData:nodeArray Deep:(deep+1) ParentID:[gp.ID intValue]];//迭代方法
}
}
}