NSTextStorage, Core Data и NSUndoManager - Как отслеживать изменения?

Представьте себе управляемый объект, который имеет временный атрибут типа NSTextStorage, Это архивируется в двоичный файл NSData объект на сохранении. При редактировании я поменяю textStorage из NSTextView так что все изменения идут прямо в текстовое хранилище. Таким образом, я могу обновить другие управляемые объекты, которые связаны с определенными текстовыми местоположениями, не оставляя контекст в несогласованном состоянии, а другие элементы пользовательского интерфейса, использующие то же текстовое хранилище, обновляются немедленно.

Проблема в том, что контекст управляемого объекта undoManager не знает, что делать с хранилищем текста при отмене / повторении. Я думаю, это потому, что действия отмены обрабатываются текстовым представлением.

Поэтому я подумал, что могу просто сериализовать / архивировать хранилище текста при каждом изменении и заменить содержимое хранилища текста его неархивированным содержимым. Я проверял это даже с более длинными текстовыми документами, и это не является реальным узким местом на Mac. Но как мне заставить менеджера отмены использовать его? Или есть совершенно другой способ заставить его работать.

Я разместил пример проекта на http://cl.ly/3B1P0r2P1i0m

0 ответов

Другие вопросы по тегам