文件提供程序扩展工作集枚举器未调用



我在"文件"应用中的工作集枚举器("最近"选项卡(时遇到问题。我为文件夹实现了一个工作枚举器,当我移动到 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) }  
}  
}  
} 

当我在"文件"应用中打开"最近"选项卡时,文件提供程序工作集枚举器是否会自动初始化?我应该直接从文件扩展名以某种方式调用它吗?

谢谢!

工作集枚举器的工作方式与您想象的不一样。 文件提供程序扩展将在后台枚举工作集,甚至在打开"文件"应用之前。 这就是您需要脱机准备工作集数据的原因。 WWDC 2017 文档可能会有所帮助。

最新更新