Основные данные iPhone: устойчивость свойства во время отмены - PullRequest
0 голосов
/ 15 декабря 2009

У меня есть модель данных, встроенная в основные данные для iPhone. У меня также есть NSUndoManager, работающий для этой модели. Проблема в том, что у меня есть определенные свойства на объекте, на которые я не хочу воздействовать во время отмены, и на другие свойства, которые я хочу откатить. Это возможно без кардинальных изменений. Если так, то каков наилучший способ сделать это?

1 Ответ

1 голос
/ 15 декабря 2009

После небольшого прочтения ...

Методы 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];
    }
}

Обратите внимание: если у вас есть куча изменений, которые вы не хотите добавлять в стек отмены, это может быть не самый эффективный способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...