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