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

Reply via email to