gpt4 book ai didi

cocoa - NSPersistentDocument 中的 NSTextView 在失去第一响应者之前不会更新脏标志

转载 作者:行者123 更新时间:2023-12-03 16:15:24 24 4
gpt4 key购买 nike

我在 NSPersistentDocument 窗口中有一个 NSTextView。我将文本字段的内容绑定(bind)到“二进制数据”核心数据字段,但是当我在 TextView 中键入文本时,文档的标题栏不会显示“已编辑”,直到 TextView 失去焦点。因此,如果我在编辑后退出,则不会保存新数据。

如果我将 NSContinuouslyUpdatesValueBindingOption 标志传递给 TextView 绑定(bind),“已编辑”会立即出现,但在长文档中性能确实会受到影响。

如何让 Core Data 知道存在未保存的更改,而无需在每次更改时实际分配所有文本数据?

(这个问题就像“Binded NSTextField doesn't update the entity until it lose the focus ”,但我不能使用 NSContinuouslyUpdatesValueBindingOption 因为它使编辑操作非常慢。)

最佳答案

据我所知,我认为这是不可能的。当您将更改分配给 NSManagnedObject 的属性时,CoreData 会为您管理 Diry 状态(以及撤消内容)。如果您只是尝试在没有数据的情况下更改目录,则潜在的保存操作将不起作用。

了解“The Document Architecture Provides Undo Support for Free”脏状态和撤消支持是如何实现的。

如果您有非常大的文本文档,我建议您不要将它们存储在 CoreData 属性中。正如您可以在“Incremental Data Reading and Writing”中阅读的那样,我建议将文本存储在单独的文件中并使用 NSFileWrapper。至少我在我的应用程序中使用了这个解决方案。

这是顺便说一句。 CoreData 本身建议什么 here “...但是,如果您能够将 BLOB 作为资源存储在文件系统上,并维护这些资源的链接(例如 URL 或路径),那就更好了。然后您可以在必要时加载 BLOB”

我不知道你的 NSTextView 中有什么样的文本,但你正在获取“长文档”。

关于cocoa - NSPersistentDocument 中的 NSTextView 在失去第一响应者之前不会更新脏标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com