ファイル アプリのワーキング セット列挙子 ([最近] タブ) に問題があります。フォルダーの作業列挙子を実装します。UI のフォルダーに移動すると enumerateItems(for オブザーバー メソッドが実行され、すべて正常に動作します。また、作業セットにも別の列挙子がありますが、作成も列挙もされません。
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) }
}
}
}
ファイル アプリの [最近] タブを開くと、FileProviderWorkingSetEnumerator は自動的に初期化されますか? FileExtension から直接呼び出す必要がありますか?
ありがとうございました!