iPhone核心数据:撤消期间的属性持久性

时间:2009-12-15 13:17:26

标签: iphone cocoa cocoa-touch core-data

我有一个内置iPhone核心数据的数据模型。我还有一个NSUndoManager适用于该模型。问题是我在一个实体上有某些属性,我不希望在撤消期间受到影响,以及我想要回滚的其他属性。这是否可能没有彻底改变的事情。如果是这样的话,最好的办法是什么。

1 个答案:

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

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