我有一个Finder Sync Extension(FSE),它显示文件的状态。有没有办法可以强制FSE再次请求Finder窗口中当前可见的所有文件/文件夹的状态。
答案 0 :(得分:4)
Finder同步扩展(FSE)具有回调beginObservingDirectoryAtURL
和endObservingDirectoryAtURL
,您可以在其中跟踪正在观察的路径(即通过添加/删除NSMutableSet
的路径)。
此外,每当主应用程序通知FSE有关文件同步状态更新时,FSE可以将接收状态缓存在字典中,其中文件路径映射到文件同步状态。
然后,当FSE从主应用程序收到消息以刷新所有项目时,FSE应检查正在观察的路径,然后从主应用程序请求所有具有observe-set前缀的高速缓存路径的新状态。此外,FSE应该删除它的内部缓存,强制它从主应用程序请求新观察到的文件(即当用户打开其他文件夹时)。
一旦FSE从主应用程序收到消息,它就可以调用
[[FIFinderSyncController defaultController] setBadgeIdentifier:syncStatus forURL:url]
,从而为网址设置正确的同步状态图标。
此解决方案假设FSE和主应用之间的双向通信渠道可以通过NSDistributedNotificationCenter
或CFMessagePort
来实现。
还要记住,可以运行多个FSE实例(即从第3个应用程序保存对话框)