NSFilePresenter -presentedSubitemDidAppearAtURL:方法永远不会被调用

Kon*_*hin 11 cocoa objective-c nsfilecoordinator

我有一个符合NSFilePresenter协议的对象,该协议代表我基于文档的应用程序文档包.当在包内创建一个新文件时,要么以编程方式使用NSFileManager和正确的NSFileCoordination方法,要么通过Finder我只得到-presentedSubitemDidChangeAtURL:事件,但在这种情况下看起来并不那么明显-presentedSubitemDidAppearAtURL:.

这是预期的行为还是我做错了什么?

-presentedSubitemDidAppearAtURL:NSFilePresenter中的评论明确指出:

通知已添加目录包含的文件或目录.如果此方法未实现但是-presentedItemDidChange,并且该目录实际上是文件包,则文件协调机制将调用-presentedItemDidChange.

jlo*_*g64 8

经过一段时间努力解决这个问题后,我向Apple提出了技术支持问题.他们的反应是这是一个错误,我们现在唯一能做的就是做好一切-presentedSubitemDidChangeAtURL:.

我鼓励任何遇到此问题的人提交错误(https://bugreport.apple.com)以鼓励Apple尽快修复此问题.

  • 现在已经2021年了,iOS 14.6中这个bug依然没有修复 (2认同)
  • 现在是 2022 年,这个错误仍然存​​在于 macOS Monterey 12.0.1 中——它应该与 iOS 15.x 类似,因为它们都依赖于基础框架 NSFilePresenter 和 NSFileCoordinator。我认为这可能与基于文档的应用程序在 NSDocument 中具有一些自动行为有关,或者与类簇中的隐藏类之一有关。然而,在文档子类之外添加另一个文件呈现器具有相同的行为:仅调用一些委托方法。并且在删除项目之前提供块的最重要方法似乎永远不会被调用。 (2认同)