質問

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.

役に立ちましたか?

解決 2

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).

他のヒント

There's always the possibility of replacing the entire array if you want to incorporate many changes to an array into a single operation.

This might have unexpected effects for e.g. objects in the UI bound to your array, though.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top