Ich habe ein verwaltetes Objekt mit mehreren Mitgliedern von NSNumber in meiner iPhone App erstellt. Ich initialisiere diese Werte. Ich erstelle auch ein Unterobjekt Mitglied. Dann erstelle ich einen Rückgängig-Manager, damit ich Operationen für das Unterobjekt rückgängig machen kann, ohne die initialisierten Parameter rückgängig zu machen. Allerdings, wenn ich meine App starte und anrufe ...Warum kann NSUndoManager canUndo JA?
[undoManager canUndo];
... es ist "JA". Wie kann das sein? Die Datenelemente der obersten Ebene werden auf Null zurückgesetzt. Nicht nur das, aber der managedObjectContext von Unterobjekt ist Null. Wie kann das sein, wenn das Unterobjekt vor der Erstellung des Undo-Managers erstellt wird. Ist der Undo-Manager rückwirkend? Es scheint, das Rückgängigmachen des gesamten verwalteten Objekts zuzulassen, obwohl diese Datenelemente VOR dem Erstellen des Rückgängig-Managers festgelegt sind.
Jeder Einblick wird geschätzt.
NSManagedObjectContext erstellt seinen eigenen Undo-Manager. Verwenden Sie disableUndoRegistration und enableUndoRegistration, um zu verhindern, dass bestimmte Dinge rückgängig gemacht werden. – ughoavgfhw
@ughoavgfhw: Nicht wahr in iOS-Plattformen! – Felix
Ich folgte dem Beispiel von CoreDataBooks für iPhone. Was verwirrend ist, ist, dass canUndo nach dem Erstellen des Undo-Managers NEIN zurückgibt und auch NO in der viewWillAppear-Methode zurückgibt (ich habe jeden anderen Code auskommentiert, der das Objekt beeinflusst). Aber wenn ich auf die Rückgängig-Schaltfläche klicke, wird JA zurückgegeben. Wie kann das sein? – Christopher