是否有办法强制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中浏览内容时,这将导致重新获取(枚举)根容器及其所有子容器。