2009-12-15 76 views
0

我有一个数据模型内置在iPhone的核心数据。我也有一个适用于该模型的NSUndoManager。问题是我在某个实体上有某些属性,我不希望在撤消过程中受影响,而且我希望回滚其他属性。这可能没有彻底改变的事情。如果是的话,最好的办法是做什么。iPhone核心数据:在撤消期间的财产持久性

回答

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]; 
    } 
} 

注意,如果你有一大堆的变化您不希望添加到撤消堆栈,这可能不是最有效的方法。

+1

通常,在禁用撤消注册时,我只需要第二个-processPendingChanges。 – 2009-12-16 16:06:18