gpt4 book ai didi

ios - FileProviderExtension workingSet 枚举器未调用

转载 作者:行者123 更新时间:2023-11-28 17:31:27 30 4
gpt4 key购买 nike

我在"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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com