내 핵심 데이터 모델에는 각각 listItem
엔티티로 연결되는 listItems
이라는 관계가 있습니다 (각각 stringValue
속성이 있음). 기본적으로 각 목록 항목에 대해 NSTextFields
의 목록 인 컨트롤을 만들었습니다. 컨트롤이 listItems
에 제대로 바인딩되어 있고 반환 키를 누르면 현재 편집 된 필드 바로 아래에 새 필드가 만들어지고 새 필드로 포커스가 변경되도록 설정했습니다. 따라서 기본적으로 새 항목을 추가하려면 사용자가 Return 키를 누릅니다.NSManagedObject의 생성/삭제에 대한 실행 취소 사용 안 함
마찬가지로 사용자가 편집을 끝내고 현재 편집 된 입력란이 비어있는 경우 입력란이 삭제됩니다 (비어있는 입력란은 '편집 모드'중에 만 표시되므로 말하기). 이것은 꽤 잘 작동합니다. 기본적으로, 내 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
I가 발생하고 문제가 행이이 방법으로 삭제 될 때마다, 그것은를 UndoManager에 등록한다는 것입니다. 따라서 행을 편집하고 Return (새 행 작성)을 누른 후 편집을 끝내려면 클릭하여 행이 사라집니다. 그러나 실행 취소하면 빈 필드가 다시 나타납니다. 내 목표는 빈 필드를 포함하는 삭제 작업을 undoManager가 무시하도록하는 것입니다.
어떻게하면됩니까? 내가 [[[self managedObjectContext] undoManager] disableUndoRegistration]
여러 지점에서 관련 enableUndoRegistration
사용하려고했습니다 (-didTurnIntoFault
등을,하지만 난 실행 취소 등록하는 방법 이전에 발생 될 수 있음을 의심)는 코어 데이터 워드 프로세서로 더 깊이 잠수하면