On Mar 7, 2015, at 5:02 AM, Diederik Meijer <[email protected]> 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];
Regards,
Ken
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]