【问题标题】: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 })

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 2023-04-10
        • 2012-07-09
        • 1970-01-01
        相关资源
        最近更新 更多