- (IBAction) cut:(id)sender {
Preset *preset = [presetsController selectedObject];
[self copy:self]; // store some interesting data in pasteboard
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] addPresetBack:preset];
if(![undo isUndoing]) {
[undo setActionName:NSLocalizedString(@"Cut", @"Cut")];
}
[presetsController removeObject:preset];
}
But I'm finding (probably quite sensible) that the preset is dead/
empty once I get back to addPresetBack. This makes sense, since
removing it from the NSArrayController probably causes the object
to be deleted from the current DB. Thus, when Undo is called, I
end up inserting a blank object.
Forgetting about CoreData for the moment, that code is wrong. You
typically need to register the inverse of your action with the undo
manager. Your code is not doing this.
What's the recommended way to handle cut/undo style operations with
CoreData?
CoreData is an object-graph management and persistence framework.
It will automatically manage undo operations on your object graph.
Jim
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/email@hidden