Objective c NSTextStorage、核心数据和NSEndomanager-如何跟踪更改?

Objective c NSTextStorage、核心数据和NSEndomanager-如何跟踪更改?,objective-c,cocoa,core-data,nsundomanager,nstextstorage,Objective C,Cocoa,Core Data,Nsundomanager,Nstextstorage,假设一个托管对象具有类型为NSTextStorage的瞬态属性。保存时会将其归档到二进制NSData对象中。在编辑时,我交换NSTextView的textStorage,以便所有更改直接进入文本存储。通过这种方式,我可以更新与某些文本位置相关的其他托管对象,而不会使上下文处于不一致的状态,并且使用相同文本存储的其他UI元素会立即得到更新 问题在于,托管对象上下文的undoManager不知道在撤消/重做时如何处理文本存储。我认为这是因为撤销操作是由文本视图处理的 所以我想我可以在每次更改时序列化

假设一个托管对象具有类型为
NSTextStorage
的瞬态属性。保存时会将其归档到二进制
NSData
对象中。在编辑时,我交换
NSTextView
textStorage
,以便所有更改直接进入文本存储。通过这种方式,我可以更新与某些文本位置相关的其他托管对象,而不会使上下文处于不一致的状态,并且使用相同文本存储的其他UI元素会立即得到更新

问题在于,托管对象上下文的
undoManager
不知道在撤消/重做时如何处理文本存储。我认为这是因为撤销操作是由文本视图处理的

所以我想我可以在每次更改时序列化/归档文本存储,并用未归档的内容替换文本存储内容。我已经用更长的文本文档对它进行了测试,它在Mac上并不是一个真正的瓶颈。但是我如何让撤消管理器使用它呢?还是有一种完全不同的方式让它发挥作用

我已经把一个样本项目放在