我有一个内置iPhone核心数据的数据模型。我还有一个NSUndoManager适用于该模型。问题是我在一个实体上有某些属性,我不希望在撤消期间受到影响,以及我想要回滚的其他属性。这是否可能没有彻底改变的事情。如果是这样的话,最好的办法是什么。
答案 0 :(得分:1)
经过一番阅读......
NSUndoManager方法:
- (void)disableUndoRegistration
- (void)enableUndoRegistration
将提供NSManagedObjectContext方法
- (void)processPendingChanges
直接调用。
例如,您可以在托管对象上添加以下方法来设置天气,或者不应该将属性的更改添加到撤消堆栈中:
- (void)setColor:(UIColor *)aColor undo:(BOOL)shouldUndo{
if (shouldUndo)
[self setColor:aColor];
else{
NSManagedObjectContext *moc = self.managedObjectContext;
[moc processPendingChanges]; //Disable undo
[moc.undoManager disableUndoRegistration];
[self setColor:aColor]; //Preform change
[moc processPendingChanges]; //Enable undo
[moc.undoManager enableUndoRegistration];
}
}
注意,如果您有一堆不希望添加到撤消堆栈的更改,这可能不是最有效的方法。