2009-12-15 66 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