У меня есть несколько проектов Core Data для MacOS, начатых с Xcode 3, который хорошо работает в Xcode 4, особенно для управления Undo / Redo.
Но теперь я запустил новый проект Core Data из Xcode 4, и у меня возникли проблемыс отменой: пункты меню Undo
и Redo
связаны с методами Undo:\Redo:
первого ответчика, как это происходит для проектов, созданных Xcode 3;но меню всегда было отключено.
Поэтому я сделал привязку из свойства Enabled
пунктов меню к managedObjectContext.undoManager.canUndo / canRedo
: это позволяет меню, когда пользователь вносит изменения в объекты, но в любом случае действие отмены имелобезрезультатно: меню остается включенным, но отмены не было.
Единственный способ получить отмену - разорвать соединение пунктов меню с Первым респондентом и вместо этого сделать еще один с новыми IBActions AppDelegate:
- (IBAction)myUndoAction:(id)sender
{
[[[self managedObjectContext] undoManager] undo];
}
- (IBAction)myRedoAction:(id)sender
{
[[[self managedObjectContext] undoManager] undo];
}
Таким образом (и со свойствами Enable
, связанными с canUndo
и canRedo
) оба пункта меню работают, как и ожидалось, для объектов Core Data;во всяком случае, у меня никогда не было этой проблемы с Xcode 3.
Кто-нибудь еще сталкивался с этой проблемой с Xcode 4?Я переустановил Xcode 4.2.1 с нуля, чтобы избежать проблем со старым шаблоном, но у меня снова возникает та же проблема.
Я не люблю устанавливать также Xcode 3, просто чтобы начать с работающего проекта, а затем перенести проект вXcode 4!
Я гуглил и просматривал все форумы, которые я знаю, также обсуждения Apple, но я ничего не нашел.Я нахожусь на 10.7.2.
ОБНОВЛЕНИЕ
Связывание Undo / Redo с AppDelegate прервет другие операции, так как Undo / Redo всегда будет вызывать NSUndoManager
из ManagedObjectContext, поэтомудействия должны оставаться связанными с Первым ответчиком.
Мне придется придерживаться Xcode 3.2, чтобы с нуля создать проект основных данных, а затем открыть его из Xcode 4 (насколько я выясню, где находится ошибка,наверное в шаблоне ...)