This example shows one possible way of implementing Drag and Drop for tableviews using bindings and core data. Our purpose is to provide a simple UI for adding members from a pool of all people into a club. The focus of this example is the NSObject subclass named DragSupportDataSource. All of the table views in the application UI are bound to an array controller but have their data source set to a single DragSupportDataSource. NSTableView drag and drop methods are called on the table view's datasource. Using infoForBinding API, the DragSupportDataSource can find out which arraycontroller the table view in the drag operation is bound to. Once the destination array controller is found, it's simple to perform the correct operations. The data source methods implemented by the DragSupportDataSource return nil/0 so that the normal bindings machinery will populate the table view with data. This may seem like a waste, but is a simple way of letting the DragSupportDataSource do the work of registering the table views for dragging. See DragSupportDataSource.m for more information. Things to keep in mind: - The drag and drop implementation assumes all controllers are working with the same NSManagedObjectContext - Most of the code in the DragSupportDataSource is for error checking and un/packing objects