2012-09-12 38 views
11

我有一个符合NSFilePresenter协议的对象,它代表了我的基于文档的应用程序文档包。当在包内创建一个新文件时,无论是编程使用NSFileManager与NSFileCoordination方法或通过Finder我只有-presentedSubitemDidChangeAtURL:事件,但在这种情况下看起来不那么明显-presentedSubitemDidAppearAtURL:NSFilePresenter -presentedSubitemDidAppearAtURL:方法永远不会被调用

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

在NSFilePresenter状态明确的上-presentedSubitemDidAppearAtURL:评论:

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

+0

我想你没有实现'-presentedItemDidChange'? – charles

+1

[这里](http://www.objc.io/issue-10/icloud-document-store.html)是一个与这个问题有关的好贴子,我的结论是;不要使用'NSFilePresenter'。 – Eonil

+1

GCD似乎是要走的路。 [使用GCD处理文件系统事件](http://www.davidhamrick.com/2011/10/10/handling-filesystem-events-with-gcd.html) – Eonil

回答

8

在经历了这个确切问题很长一段时间之后,我开了一个Apple技术支持问题。他们的回应是,这是一个错误,我们现在唯一能做的就是通过-presentedSubitemDidChangeAtURL:来做所有事情。

我会鼓励任何遇到此问题的人提交错误(https://bugreport.apple.com),鼓励Apple尽快解决此问题。

+0

苹果对你的回应是否表明“bug”的程度?简单说就是'-presentedSubitemDidAppearAtURL:','-accommodatePresentedSubitemDeletionAtURL:completionHandler:'et。人。还没有被NSFileCoordinator API处理,或者是否有被调用的情况? –

+0

他们没有透露任何细节给我,所以我不确定,不幸的是。 – jlong64

+1

2014年11月仍然如此。为此我浪费了大约一天的时间。不管怎么说,还是要谢谢你。 – Eonil

相关问题