【发布时间】:2014-12-21 10:41:14
【问题描述】:
我正在尝试为支持 NSTextView 的 Core Data 做一些重要的工作。我想在我的核心数据模型中存储的不是整个 NSTextStorage,而是将其分成段落并将这些段落分别保存在单个实体中。
事实上,我已经完成了所有工作。但我无法处理撤消/重做支持。如果我将所有更改存储在 TextDidChange 通知或其他内容中,我基本上会失去 NSTextView 的撤消支持,因为 Core Data 开始存储确实进入文本存储的每个字符。因此,撤消管理器会单独注册该操作。当我撤消时,我只是逐个字符地撤消,这不是我想要的。如果我不在 Core Data 中存储输入的文本,textview 的撤消管理工作正常。
我如何知道撤消管理器何时开始和关闭一组操作,以便仅在关闭一组操作时存储更改?
我试图观察 NSUndoManager 的 NSUndoManagerDidCloseUndoGroupNotification ,但它没有帮助,因为我在每个字符输入期间都会收到该通知,并且仍然会遇到烦人的逐字符撤消行为。
是否有可能得到解决方法?
更新:当我更新核心数据实体时,我能够通过 disableUndoRegistration() 实现我的目标。但我想知道是否有其他解决方案。
【问题讨论】:
-
至少会感谢一个原因,为什么我得到-1。我认为深入探索核心数据是一项有趣的任务,因为使用 NSTextView 支持它的默认实现非常简单。
标签: objective-c cocoa core-data swift