我有两个实体A和B.A与B有一对多的关系。在B中改变了一些属性之后,我如何撤销B中的所有变更?我曾尝试回滚的方法,但将在A.影响其他性能撤销管理器在coredata中使用
2
A
回答
1
尝试调用上的UndoManager disableUndoRegistration
刚刚进行任何更改A之前,只是进行任何更改A.
现在以后打电话enableUndoRegistration
,在哪里放这个代码?理想情况下,你会重写你的A类NSManagedObject中的某些方法,但哪些?我认为validate
方法不会起作用,至少不会禁用撤消注册,因为我认为在调用撤消管理器之前,更改可能已经注册到撤消管理器。使用will/didChangeValueForKey:
很诱人 - 但是类引用指出“您不能重写此方法”。
所以我认为你在任何界面操作,可影响A.
编辑卡住解决这个 - 这里就是你所要求的样品:
- (IBAction) someAction:(id)sender {
BOOL isA = NO;
NSManagedObjectContext currentContext = nil;
if ([[sender objectControlledBySender] isKindOfClass:[subclassedManagedObjectA class]]) {
isA = YES;
currentContext = // get a ref to your current context, or just make it an unretained property of this controller's class
[currentContext.undoManager disableUndoRegistration];
}
// Make the changes to the object accessed via sender.
if (isA)
[currentContext.undoManager enbleUndoRegistration];
}
的“objectControlledBySender”是必然含糊不清,因为sender
可以通过任何类型的控制,以及任何类型的访问器访问它显示或编辑或选择的对象。
相关问题
- 1. 使用核心数据撤销管理
- 2. 如何使用arcgis javascript顶点撤销管理器
- 3. 如何在不使用内置撤销管理器的情况下撤销NSManagedObject删除?
- 4. Jhipster - 如何管理jwt撤销?
- 5. 在iphone中的撤消管理器sdk
- 6. API管理器OAuth令牌撤销有问题
- 7. 撤销管理器不与NSPersistentDocument保持同步
- 8. 核心数据撤销管理器崩溃
- 9. 在CoreData中撤消操作
- 10. 撤销iOS证书撤销
- 11. 如何从DB2撤销Windows管理员用户的权限?
- 12. 如何管理VSPackage中的撤销/重做堆栈?
- 13. CoreData内存管理
- 14. 在eclipse项目资源管理器中禁用撤消
- 15. 在WPF中撤销/重做?
- 16. 在oracle中撤销权限
- 17. 在Oracle中撤销特权
- 18. 在Oracle中撤销POST
- 19. 撤消管理器为零---为什么?
- 20. 撤消管理器的观察
- 21. 撤消管理器和多个MOC
- 22. Objective-C撤消管理器问题
- 23. FileSystemWatcher - Windows资源管理器 - >撤消
- 24. 如何管理撤销删除与数据库
- 25. 如何使用撤消管理器与核心数据实体
- 26. ios撤消管理器 - 重置为第一个撤消
- 27. 多个窗口的核心数据和单独的撤销管理器?
- 28. 使异步代码撤销
- 29. 撤销TFS Unshelve
- 30. 撤销注册
您的意思是可能对A和B进行更改,并且您希望undoManager仅撤消对B所做的更改? (假设你不意味着关系成员变化,这是A和B之间的倒数) – Wienke
yeap!有无论如何处理这个问题吗? –