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

cocoa – NSPersistentDocument中的NSTextView在失去第一个响应者之前不会更新脏标志,第1张

概述我在NSPersistentDocument窗口中有一个NSTextView.我将文本字段的内容绑定到“二进制数据”核心数据字段,但是当我在文本视图中键入文本时,文档的标题栏在文本视图失去焦点之前不会说“已编辑”.因此,如果我在编辑后退出,则不会保存新数据. 如果我将NSContinuouslyUpdatesValueBindingOption标志传递给文本视图绑定,则会立即显示“已编辑”,但性能 我在NSPersistentdocument窗口中有一个NSTextVIEw.我将文本字段的内容绑定到“二进制数据”核心数据字段,但是当我在文本视图中键入文本时,文档的标题栏在文本视图失去焦点之前不会说“已编辑”.因此,如果我在编辑后退出,则不会保存新数据.

如果我将NSContinuouslyUpdatesValueBindingOption标志传递给文本视图绑定,则会立即显示“已编辑”,但性能在长文档中确实存在.

如何在没有实际分配每次更改的所有文本数据的情况下让核心数据知道有未保存的更改?

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

解决方法 据我所知,我认为这是不可能的.
当您将更改分配给NSManagnedobject的属性时,CoreData会为您管理diry状态(以及撤消的东西).如果您只是尝试在没有数据的情况下更改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在失去第一个响应者之前不会更新脏标志全部内容,希望文章能够帮你解决cocoa – NSPersistentDocument中的NSTextView在失去第一个响应者之前不会更新脏标志所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存