【问题标题】:iPhone Core Data: Property Persistance During UndoiPhone核心数据:撤消期间的属性持久性
【发布时间】:2009-12-15 13:17:25
【问题描述】:

我在 iPhone 的核心数据中构建了一个数据模型。我还有一个为该模型工作的 NSUndoManager。问题是我在一个实体上有某些属性,我不想在撤消过程中受到影响,而其他属性我确实想回滚。在不彻底改变事物的情况下,这是否可能。如果是这样,最好的方法是什么。

【问题讨论】:

    标签: iphone cocoa cocoa-touch core-data


    【解决方案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];
        }
    }
    

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

    【讨论】:

    • 一般来说,我在禁用撤销注册时只需要第二个-processPendingChanges。
    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多