Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用NSDocument检测被覆盖的文件_Macos_Cocoa_Nsdocument - Fatal编程技术网

Macos 使用NSDocument检测被覆盖的文件

Macos 使用NSDocument检测被覆盖的文件,macos,cocoa,nsdocument,Macos,Cocoa,Nsdocument,我有一个OSX应用程序,它使用NSDocument和autosaves,一切都很好。有时,用户会将文档保存到Dropbox同步文件夹中,然后在应用程序中文档仍处于打开状态时,文档有可能被更新(通过Dropbox)。问题是,我如何检测到这一点并从磁盘重新加载文档(或者至少通知用户) 谢谢NSDocument实现了开箱即用的协议。您可以覆盖presentedItemDidChange以在文件更改时自动更新。我没有太多使用NSDocument,因此可能有一个内置的方法,但是,如果不是,我建议使用GCD

我有一个OSX应用程序,它使用NSDocument和autosaves,一切都很好。有时,用户会将文档保存到Dropbox同步文件夹中,然后在应用程序中文档仍处于打开状态时,文档有可能被更新(通过Dropbox)。问题是,我如何检测到这一点并从磁盘重新加载文档(或者至少通知用户)


谢谢

NSDocument
实现了开箱即用的协议。您可以覆盖
presentedItemDidChange
以在文件更改时自动更新。

我没有太多使用
NSDocument
,因此可能有一个内置的方法,但是,如果不是,我建议使用GCD文件描述符来监视文件的更改。FSEvents是用于监视文件更改的API。@GradyPlayer:FSEvents是用于监视目录更改的API。然后,您必须找到自己更改的文件。使用kevent(包装在CFFileDescriptor或可能是GCD中)将使您能够监视单个文件。缺点是,如果用户打开(比如)200个文件,您将受到文件描述符的限制,您将无法查看所有文件,并且可能会开始抛出错误。@PeterHosey更正,这是专门用于查看目录的,但每个文件中都有事件,NSDocument的每个实例只需要查看一个目录,并忽略所有事件的文件,它不是。。。