我的NSManagedObject(Unit)的自定义子类上有一个类别(Unit + LD)。我希望在实例根据撤消或重做活动进行更改时触发通知,因此我在Unit + LD.m中如此覆盖:
- (void)awakeFromSnapshotEvents:(NSSnapshotEventType)flags
{
NSLog(@"awakeFromSnapshotEvents");
[super awakeFromSnapshotEvents:flags];
switch (flags) {
case NSSnapshotEventUndoDeletion:
NSLog(@"awakeFromSnapshotEvents: undoDeletion");
[[NSNotificationCenter defaultCenter] postNotificationName:OBJECT_CREATED object:self];
break;
case NSSnapshotEventUndoInsertion:
NSLog(@"awakeFromSnapshotEvents: undoInsertion");
[[NSNotificationCenter defaultCenter] postNotificationName:OBJECT_DELETED object:self];
break;
case NSSnapshotEventUndoUpdate:
NSLog(@"awakeFromSnapshotEvents: undoUpdate");
[[NSNotificationCenter defaultCenter] postNotificationName:OBJECT_CREATED object:self];
break;
default:
break;
}
}
不幸的是,这永远不会被调用。我添加的NSLog都没有出现,甚至没有出现在方法的第一行。我是否必须在某处注册这些通知?我认为这个方法是自动调用的...我甚至尝试将它直接添加到我的Core-Data生成的Unit.m子类中,但它仍然无法工作。 iOS 8中有什么变化吗?
谢谢!我对这件事感到非常难过。
更新
我将NSUndoManager分配给上下文的方式只是断断续续的。没有什么可怕的神秘。哦,好吧!