Re: Calling processPendingChanges from awakeFromInsert
Re: Calling processPendingChanges from awakeFromInsert
- Subject: Re: Calling processPendingChanges from awakeFromInsert
- From: Jim Correia <email@hidden>
- Date: Thu, 20 Sep 2007 16:59:32 -0400
On Sep 20, 2007, at 4:13 PM, Michael Burns wrote:
I'm having a strange problem while trying to set a value for an
NSManagedObject in its "awakeFromInsert" method. The code is as
follows:
- (void)awakeFromInsert
{
[super awakeFromInsert];
NSManagedObjectContext* moc = [self managedObjectContext];
// don't allow this new object to be undone
[moc processPendingChanges];
[[moc undoManager] disableUndoRegistration];
[self performSelector:@selector(setUniqueProject) withObject:nil
afterDelay:0];
// turn the undo manager back on
[moc processPendingChanges];
[[moc undoManager] enableUndoRegistration];
}
The object is inserted by pressing a button binded to an
NSArrayController who's set is binded to an NSTableView. The
problem is that when I run this code as is, it creates two
identical objects in the table view. If I comment out the two [moc
processPendingChanges] lines, the problem goes away but then (of
course) I can undo the actions in "setUniqueProject" and that is
not good.
As Tony mentioned, processPendingChanges inside of -awake<xxx> is a
bad idea.
But it is unclear to me from your code snippet what you are trying to
disable undo registration for in the first place?
You've disabled undo registration, scheduled a perform delayed
selector (in other words, do this later, not right now), then re-
enabled undo registration. It isn't clear to me what you intended to
do, but I think whatever it was, it isn't what your code is doing :-).
Jim
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden