Отключить отмену для создания / удаления NSManagedObject
В моей базовой модели данных у меня есть отношение, называемоеlistItems
который ссылается на несколькоlistItem
сущности, каждая сstringValue
приписывать. Я создал элемент управления, который по сути представляет собой списокNSTextFields
по одному на каждый элемент списка. Контроль связан сlistItems
правильно, и я настроил его так, что нажатие клавиши возврата создает новое поле непосредственно под редактируемым в настоящее время и меняет фокус на новое поле. Таким образом, чтобы добавить новый элемент, пользователь нажимает Return.
Аналогичным образом, если пользователь заканчивает редактирование, а редактируемое в настоящее время поле пусто, поле удаляется (как, например, пустые поля появляются только в «режиме редактирования», так сказать). Это работает довольно хорошо. В основном по моемуlistItem
NSManagedObject подкласс, я делаю следующее:
// Don't allow nil values
if (!value && [[self.recipe ingredients] count] > 1) {
for (EAIngredientRef *ingredient in [self.recipe ingredients]) {
if ([[ingredient sortIndex] integerValue] > [[self sortIndex] integerValue]) {
[ingredient setSortIndex:[NSNumber numberWithInteger:([[ingredient sortIndex] integerValue]-1)]];
}
}
[[self managedObjectContext] deleteObject:self];
return;
}
// Code to handle if it is a real value
Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда строка удаляется таким образом, она регистрируется в undoManager. Таким образом, если я редактирую строку, нажимаю Return (что создает новую строку) и щелкаю, чтобы закончить редактирование, строка исчезает. Однако, если я затем отменю, пустое поле появляется снова. Моя цель - сделать так, чтобы операции удаления, включающие пустые поля, игнорировались undoManager.
Как бы я пошел по этому поводу? Я пытался использовать[[[self managedObjectContext] undoManager] disableUndoRegistration]
и связанныйenableUndoRegistration
в нескольких местах (например,-didTurnIntoFault
, но я подозреваю, что регистрация отмены могла произойти до того метода)