【发布时间】:2018-05-06 19:37:18
【问题描述】:
我有一个显示文件状态的 Finder 同步扩展 (FSE)。有没有办法强制 FSE 再次请求 Finder 窗口中当前可见的所有文件/文件夹的状态。
【问题讨论】:
-
你要逼谁?
Finder向您的分机 (appex) 或您的应用程序的分机请求状态?因为第二个问题是您内部组织的问题(CFMessagePort是一个解决方案)。 -
我希望 Finder 刷新所有可见文件和文件夹的状态。 Afaik,你不能这样做,但我能做的(在答案中描述)是跟踪每个文件 Finder 请求的观察到的路径和缓存状态。然后,当 FSE 从主应用程序获取消息以刷新所有内容时,FSE 将简单地遍历所有仍在观察的缓存路径,并从应用程序请求每个路径的状态。此外,FSE 会删除它的内部 {path->status} 缓存(因为我使用分布式通知,FSE 会保留缓存状态以减少 FSE 和主应用程序之间的通信)。
-
“然后,当 FSE 从主应用程序获取消息以刷新所有内容时,FSE 将简单地遍历所有仍在观察的缓存路径,并从应用程序请求每个路径的状态。”您说的是来自应用程序的消息,但是 FSE 在收到此消息时如何刷新 Finder?
-
FSE 可以调用
[[FIFinderSyncController defaultController] setBadgeIdentifier:syncStatus forURL:url],从而指示 Finder 更新给定 URL 的同步图标。 -
非常感谢,这似乎是您问题的答案......您能否将其添加到您的答案中以支持您?顺便说一句,这总是对你有用吗?示例:High Sierra,使用 Finder 复制文件夹 - 它并不总是适用于新文件夹!
标签: findersync