Я создаю приложение на основе документов OSX, используя CoreData и NSUndoManager.
У меня есть глобальный NSUndoManager, который обрабатывает Undoing и Redoing, вместо того, чтобы использовать тот, который по умолчанию встроен в каждый NSManagedDocument. Это означает, что я регистрирую отмены и повторения вручную, вместо того, чтобы полагаться на их автоматическую регистрацию при изменении контекста управляемого объекта.
Когда я удаляю NSManagedObject из NSManagedObjectContext, я хочу зарегистрировать отмену, которая восстанавливает удаленный объект. Я знаю, что это возможно, потому что встроенный NSUndoManager NSManagedDocument будет делать это по умолчанию, но попытка использовать объект после его удаления вызывает ошибку. Как я могу восстановить реальный объект во время отмены?
func removeAnObject(object: NSManagedObject) {
self.managedObjectContext?.deleteObject(object)
self.project?.undoManager?.registerUndoWithTarget(self, handler: { (object) in
// how to undelete object???
self.project?.undoManager?.prepareWithInvocationTarget(self).removeAnObject(object)
})
}