Search code examples
objective-ccocoakey-value-observingnsarraycontroller

Single model update for multiple changes in NSArrayController subclass


I implemented an NSArrayController subclass to implement row reordering with bindings, using the code included in this post as a starting point. In the -tableView:acceptDrop:row:dropOperation: method, I perform the following:

[self removeObjectAtArrangedObjectIndex:removeIndex];
[self insertObject:object atArrangedObjectIndex:insertIndex];

The above code updates the model twice (one for each statement). For my purposes, I would like to have only one update.

Is there any way to achieve this?

Thanks.


Solution

  • I ended up doing the following:

    [_content removeObject: [objects objectAtIndex: removeIndex]]; // < Here's the hack
    [self insertObject:object atArrangedObjectIndex:insertIndex];
    

    Where _content is in fact the content array of the controller.
    The above works fine in my case (as described in my question).