如何强制macOS文件提供程序扩展重新枚举项



是否有办法强制macOS File Provider Extension重新枚举给定父容器的项目?

我知道我们可以signalEnumerator(for: .workingSet),但这只会在FileProviderEnumerator中调用enumerateChanges回调。我要找的是:内部结构变化太大,最好重新列举内容,用它重建新模型。这应该导致在FileProviderEnumerator中调用enumerateItems回调。

有什么办法可以做到这一点吗?

我找到了一个解决方案,通过调用NSFileProviderManager reimportItems函数:

manager.reimportItems(below: obj, completionHandler: {_ in })

也许注销和注册FileProvider域名会有帮助。

删除所有域并重新添加域:

let identifier = NSFileProviderDomainIdentifier(rawValue: "Your-Domain-Identifier")
let domain = NSFileProviderDomain(identifier: identifier, displayName: "Your-Provider-Domain")
NSFileProviderManager.removeAllDomains { error in
    if error != nil {
        print("Error removing all domains: (error)")
    } else {
        NSFileProviderManager.add(domain) { error in
            print("Error adding domain: (error)")
        }
    }
}

当用户在Finder中浏览内容时,这将导致重新获取(枚举)根容器及其所有子容器。

最新更新