On Oct 14, 2013, at 8:32 PM, Jens Alfke <[email protected]> wrote:

> On Oct 14, 2013, at 3:49 PM, Michael Babin <[email protected]> wrote:
> 
>> I used the method described here on a project using NSTreeController and 
>> bindings to populate an outline view:
>> http://blog.wilshipley.com/2006/04/pimp-my-code-part-10-whining-about.html
>> I'm not aware of any changes to NSTreeController/bindings that would replace 
>> this approach, but I'm always ready to be pleasantly surprised. :-)
> 
> Well, the big change is that what Wil in 2006 called the "strange little 
> shadow objects that point to your REAL objects when you put real objects into 
> an NSTreeController” are now public API, as NSTreeNode instances. This makes 
> it feasible to navigate the controller’s tree without having to do a lot of 
> NSIndexPath gunk the way his code does.
> 
> These days, to get the index paths of model objects you “simply” have to 
> recurse down the NSTreeNode hierarchy, which is still a mess but probably a 
> lot more efficient than Wil’s 2006 code. So I guess it’s time for me to write 
> that code...

I've found that it's far more efficient to recurse *up* the NSTreeNode 
hierarchy — e.g. start with the object you're looking for, then look at its 
parent, then its grandparent, etc. until you end up at the root. This way you 
only have to iterate through the objects that make up your object's family 
tree, instead of having to search the whole hierarchy the way Shipley's code 
does (causing all sorts of unnecessary nodes to be lazily created in the 
process). Of course, your objects have to have a reference back to their 
parents for this to work.

Charles

_______________________________________________

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]

Reply via email to