Pracuję nad podstawową aplikacją danych, która ma raczej dużą hierarchię zarządzanych obiektów podobnych do drzewa.NSUndoManager, dane podstawowe i selektywne cofanie/ponawianie
Po utworzeniu obiektu podstawowego tworzy kilka obiektów podrzędnych, które z kolei tworzą własne obiekty podrzędne i tak dalej. Każdy z tych obiektów podrzędnych może zbierać informacje za pomocą NSURLConnections.
Teraz, chciałbym obsługiwać cofanie/ponawianie z undoManager w managedObjectContext. Problem polega na tym, że jeśli użytkownik utworzy obiekt podstawowy, a następnie spróbuje cofnąć tę akcję, obiekt podstawowy nie zostanie usunięty. Zamiast tego jeden lub więcej obiektów podrzędnych może zostać usunięty. Oczywiście ten rodzaj działania jest nieprzewidywalny i niechciany.
Próbowałem domyślnie wyłączyć rejestrację cofnięć. Zrobiłem to, wywołując disableUndoRegistration:
zanim cokolwiek zostanie zmodyfikowane w managedObjectContext. Następnie, umożliwiając cofnięcie rejestracji przed operacjami podstawowymi, takimi jak tworzenie obiektu podstawowego, ponownie wyłącza rejestrację kolejnych słów.
Teraz, gdy próbuję cofnąć, otrzymuję ten błąd:
undo: NSUndoManager 0x1026428b0 is in invalid state, undo was called with too many nested undo groups
myśli?
to działało dla mnie! –