views:

110

answers:

3

I have a NSArrayController bound to a NSTableView. With this I have the typical Add/Remove buttons.

While Adding an item is very straight forward (I call a method, create an object with default values and add it) I have problems deleting objects from the controller. I know I can do this the easy way when connecting the button with the remove action from the ArrayController. But this is not what I want. I need to remove the object manually because I have some additional code to process.

Anway, removing objects seems far more complcated then I expected. It already tried:

NSArray *items =  [doToItemsArrayController selectedObjects];
[doToItemsArrayController removeSelectedObjects:items]; 

or

NSIndexSet *iSet = [doToItemsArrayController selectionIndexes];
[doToItemsArrayController removeSelectionIndexes:iSet];

None of them seems to work. How do I remove the selected Object from an NSArrayController with Objective-C code?

A: 

The methods you tried are for removing objects from the selection, not for removing objects from the array. Why not just call the remove: action method?

JWWalker
A: 

You can use -removeObjects: to actually remove the objects instead of removing them from the selection:

[doToItemsArrayController removeObjects:items];
Georg Fritzsche
A: 

There must be another way! If you take this example (MacRuby syntax)

class AppController

  attr_accessor :query

  def applicationDidFinishLaunching(aNotification)
    self.query = NSMetadataQuery.alloc.init
  end

end

and bind an NSArrayController to AppController > query.results, then items are getting deleted even without the NSMetadataQuery object knowing of the existence of an ArrayController!

jazzbox