Sorry, yes I see now!! Will try that out and let you know!
Sent from my iPhone > On 07 Mar 2015, at 13:43, Ken Thomases <k...@codeweavers.com> wrote: > > On Mar 7, 2015, at 6:34 AM, Diederik Meijer <diede...@tenhorses.com> wrote: > >>> On 07 Mar 2015, at 12:36, Ken Thomases <k...@codeweavers.com> wrote: >>> >>>> On Mar 7, 2015, at 5:02 AM, Diederik Meijer <diede...@tenhorses.com> wrote: >>>> >>>> This is part of XML parsing with NSXMLParser, is there any way to avoid >>>> this type of staircasing by constructing a keyPath dynamically? >>>> >>>> if (self.nestingLevel == 1) { [[[self.rootparser nodeTree] >>>> lastObject][@"items"] addObject:dict]; } >>>> if (self.nestingLevel == 2) { [[[[self.rootparser nodeTree] >>>> lastObject][@"items"] lastObject][@"items"] addObject:dict]; } >>>> if (self.nestingLevel == 3) { [[[[[self.rootparser nodeTree] >>>> lastObject][@"items"] lastObject][@"items"] lastObject][@"items"] >>>> addObject:dict]; } >>>> if (self.nestingLevel == 4) { [[[[[[self.rootparser nodeTree] >>>> lastObject][@"items"] lastObject][@"items"] lastObject][@"items"] >>>> lastObject][@"items"] addObject:dict]; } >>>> >>>> As you can see the action is always the same: addObject:dict >>>> >>>> But depending on the level of nesting, lastObject][@"items”] needs to be >>>> added multiple times to the self.rootparser’s nodeTree property. >>>> >>>> Is there any way to use a loop that runs for self.nestingLevel times and >>>> adds the extra levels to the keyPath just as many times as needed and then >>>> use that to access the noteTree at the exact right level? >>> >>> No. Key paths can't index into arrays. However, you can just use a simply >>> for loop. Something like: >>> >>> NSMutableArray* array = [[self.rootparser nodeTree] lastObject][@"items"]; >>> for (int i = 1; i < self.nestingLevel; i++) >>> array = array.lastObject[@"items"]; >>> [array addObject:dict]; > >> >> Thanks Ken, but this does not seem to traverse down into n nested levels, >> correct? > > It does traverse down. It's just like your code, except generalized. > >> The loop goes through the nodeTree's first level children only (pardon the >> bad semantics here) > > Each time through the loop, it reassigns the "array" variable. So, the next > time through the loop, it's accessing a deeper level of the tree. > > Regards, > Ken > > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com