【问题标题】:Core Data + NSTextView + Undo Manager核心数据 + NSTextView + 撤消管理器
【发布时间】: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


【解决方案1】:

事实上,我做到了。最终,这并不太难。但这确实花了一些时间。 这是我跟踪段落的 NSTextStorage 存储库:https://github.com/CineDev/ParagraphTextKit

【讨论】:

    猜你喜欢
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2012-08-25
    • 2011-08-07
    相关资源
    最近更新 更多