Hi all,

I have bound a NSTreeController to a NSOutlineView. I am trying to insert child nodes into this structure, but I cannot seem to make it work. This is the code I originally used:

- (void)addChildren:(NSArray *)children toNode:(NSTreeNode *)node
{
        NSXMLElement *parent = [node representedObject];
        for (NSXMLNode *child in children)
        {
                [parent addChild:child];
        }
        
        [registerController rearrangeObjects];
}

I figured by updating the NSXML* model and then rearranging it should work, but it didn't. So I then wrote code to take advantage of NSTreeNode in 10.5:

- (void)addChildren:(NSArray *)children toNode:(NSTreeNode *)node
{
        NSMutableArray *childNodes = [node mutableChildNodes];
        [childNodes removeAllObjects];
        for (NSXMLNode *child in children)
        {
NSTreeNode *newChild = [[NSTreeNode alloc] initWithRepresentedObject:child];
                [childNodes addObject:newChild];
                [newChild release];
        }
}

But this results in this exception: -[NSKeyValueFastMutableArray2 count]: value for key children of object 0x105a220 is nil:
#0      0x91bdd0d7 in objc_exception_throw
#1      0x94827f2b in +[NSException raise:format:arguments:]
#2      0x94827f6a in +[NSException raise:format:]
#3 0x944b5061 in -[NSKeyValueFastMutableArray2 _nonNilArrayValueWithSelector:]
#4      0x944b4fa9 in -[NSKeyValueFastMutableArray2 count]
#5      0x9455c5a7 in -[NSKeyValueNotifyingMutableArray addObject:]
#6 0x96f6769f in -[NSTreeControllerTreeNode insertObject:inSubNodesAtIndex:]
#7      0x944b50af in -[NSKeyValueFastMutableArray insertObject:atIndex:]
#8      0x944b4f74 in -[NSKeyValueFastMutableArray addObject:]
#9 0x0000446a in -[DebuggerWindowController addChildren:toNode:] at DebuggerWindowController.m:278

I've also tried to insert using index paths, but this, too, results with the above crash:

- (void)addChildren:(NSArray *)children toNode:(NSTreeNode *)node
{
        [[node mutableChildNodes] removeAllObjects];
        NSIndexPath *ip = [node indexPath];
        for (NSXMLNode *child in children)
        {
NSTreeNode *newChild = [[NSTreeNode alloc] initWithRepresentedObject:child]; [registerController insertObject:child atArrangedObjectIndexPath:[ip indexPathByAddingIndex:0]];
                [newChild release];
        }
}

I have no other ideas for how to get this to work. Basically, the tree displayed is incomplete, and as the user expands the tree, data is fetched from a server and then inserted beneath a node.

Thanks,
Robert
_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to