Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Implementing Undo for a Cut operation, against an NSManagedObject



Hi,
I'd like to be able to nicely undo a cut operation, for a managed coredata object.


My initial idea was something like this (where Preset is the managed object):

- (void) addPresetBack:(Preset*)preset {
	[presetsController insert:preset];
}

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

What's the recommended way to handle cut/undo style operations with CoreData?

---
Neil Clayton



_______________________________________________
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

This email sent to email@hidden


Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.