我有一个符合NSFilePresenter协议的对象,该协议代表我基于文档的应用程序文档包。当在包中创建一个新文件时,要么以编程方式使用NSFileManager和正确的NSFileCoordination方法,要么通过Finder我只获得-presentedSubitemDidChangeAtURL:
事件,但在这种情况下-presentedSubitemDidAppearAtURL:
看起来并不那么明显。
这是预期的行为还是我做错了什么?
NSFilePresenter对-presentedSubitemDidAppearAtURL:
的评论明确指出:
通知已添加目录包含的文件或目录。如果未实现此方法但
-presentedItemDidChange
是,并且该目录实际上是文件包,则文件协调机制将调用-presentedItemDidChange
。
答案 0 :(得分:8)
在这个问题上挣扎了很长一段时间后,我向Apple提出了一个技术支持问题。他们的反应是这是一个错误,我们现在唯一可以做的就是通过-presentedSubitemDidChangeAtURL:
完成所有事情。
我会鼓励任何遇到此问题的人提交错误(https://bugreport.apple.com),以鼓励Apple尽快解决此问题。
答案 1 :(得分:-2)
https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSFilePresenter_protocol/
演示者对象 未通知使用低级读写调用直接对文件进行的更改。 仅通过文件协调器的更改会导致通知。