1

ファイル アプリのワーキング セット列挙子 ([最近] タブ) に問題があります。フォルダーの作業列挙子を実装します。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 から直接呼び出す必要がありますか?

ありがとうございました!

4

1 に答える 1