【问题标题】:How to force macOS File Provider Extension to re-enumerate items如何强制 macOS 文件提供程序扩展重新枚举项目
【发布时间】:2022-10-25 19:29:39
【问题描述】:
有没有办法强制macOS File Provider Extension 重新枚举给定父容器的项目?
我知道我们可以signalEnumerator(for: .workingSet) 但这只会调用FileProviderEnumerator 中的enumerateChanges 回调。我正在寻找的是这样的:内部结构发生了很大变化,最好重新列举内容并用它重建新模型。这应该会导致在FileProviderEnumerator 中调用enumerateItems 回调。
是否有任何选择可以实现这一目标?
【问题讨论】:
标签:
swift
macos
fileprovider-extension
【解决方案1】:
也许注销和注册 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 中浏览内容时,这应该会导致再次重新获取(枚举)根容器及其所有子容器。
【解决方案2】:
我通过调用 NSFileProviderManager reimportItems 函数找到了解决方案:
manager.reimportItems(下:obj,completionHandler:{_ in })