ios - FileProviderExtension workingSet 枚举器未调用

标签 ios working-set fileprovider-extension

我在"file"应用程序中遇到工作集枚举器(“最近”选项卡)的问题。我为文件夹实现了一个工作枚举器,它运行 enumerateItems(当我移动到 UI 中的文件夹时用于观察者方法并且一切正常。 我也有一个不同的工作集枚举器,但它没有创建和枚举任何东西。

    override func enumerator(for containerItemIdentifier: NSFileProviderItemIdentifier) throws -> NSFileProviderEnumerator {  
        let maybeEnumerator: NSFileProviderEnumerator?  
        if (containerItemIdentifier == NSFileProviderItemIdentifier.rootContainer) {  
            let directory = repository.directory(for: containerItemIdentifier)!  
            maybeEnumerator = FileProviderFolderEnumerator()  
        } else if (containerItemIdentifier == NSFileProviderItemIdentifier.workingSet) {  
            maybeEnumerator = FileProviderWorkingSetEnumerator() // not called  
        } else {  
            _ = repository.item(for: containerItemIdentifier)  
            if repository.isDirectory(at: containerItemIdentifier) {  
                let directory = repository.directory(for: containerItemIdentifier)!  
                maybeEnumerator = FileProviderFolderEnumerator() // works fine  
            } else {  
                maybeEnumerator = FileProviderItemEnumerator()  
            }  
        }  
        guard let enumerator = maybeEnumerator else {  
            throw NSError(domain: NSCocoaErrorDomain, code: NSFeatureUnsupportedError, userInfo:[:])  
        }  
        return enumerator  
    }

我正在尝试使用信号在 startProvidingItem 方法中调用工作集枚举器,但它不起作用。

override func startProvidingItem(at url: URL, completionHandler: @escaping ((_ error: Error?) -> Void)) {  
    loadItem {  
        //when done with loading  
        NSFileProviderManager.default.signalEnumerator(  
            for: NSFileProviderItemIdentifier.workingSet,  
            completionHandler: { error in  
                if let err = error { print(err) }  
        }  
    }  
} 

当我在"file"应用程序中打开“最近”选项卡时,FileProviderWorkingSetEnumerator 是否会自动初始化?我应该直接从 FileExtension 以某种方式调用它吗?

谢谢!

最佳答案

工作集枚举器并不像您想象的那样工作。 文件提供程序扩展将在后台枚举工作集,甚至在您打开文件应用程序之前。 这就是您需要离线准备工作集数据的原因。 WWDC 2017 document可能有帮助。

关于ios - FileProviderExtension workingSet 枚举器未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52245457/

相关文章:

ios - Apple 文件应用程序 "Raname"文件/文件夹功能在文件提供程序扩展中不起作用

ios - 无效的图像路径 - 未找到图像

java - 我可以使用在当前编辑器中打开的文件创建工作集吗?

ios - NSFileProviderExtension扩展显示下载进度

Eclipse 多个项目在项目资源管理器中作为一个项目查看

java - Eclipse插件: get contents of working set

swift - 如何将文件提供程序添加到 MacOS Swift 应用程序?

ios - 在 WKWebView 中隐藏键盘附件栏

ios - 如何使用 swift3 将已排序的结构放入另一个结构/字典中?

ios - Objective C - UITableView 视觉变化出现在 false if 语句中