FileProviderExtension workingSet枚举器未调用

时间:2018-09-09 14:24:48

标签: ios working-set fileprovider-extension

“文件”应用中的工作集枚举器(“最近”选项卡)有问题。我为Folders实现了一个有效的枚举器,它运行enumerateItems(当我移至UI中的文件夹时用于观察者方法,一切正常。 我也有一个用于工作集的枚举器,但是它没有创建和枚举任何东西。

List<Task<DocumentSnapshot>> tasks = new ArrayList<>();
for (String uid: uidList) {
    Task<DocumentSnapshot> documentSnapshotTask = users.whereEqualTo(Consts.UID, uid).get();
    tasks.add(documentSnapshotTas);
}
Tasks.whenAllSuccess(tasks).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
    @Override
    public void onSuccess(List<Object> list) {
        //Do what you need to do with your users list
        for (Object object : list) {
            FsUser fsUser = ((DocumentSnapshot) object).toObject(TeacherPojo.class);
            Log.d("TAG", fsUser.getName());
        }
    }
});

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

    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  
    }

当我在“文件”应用中打开“最近记录”选项卡时,FileProviderWorkingSetEnumerator是否自动初始化?我应该直接通过FileExtension调用它吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

工作集枚举器的工作方式与您的想法不同。 文件提供程序扩展名将在后台枚举工作集,甚至在您打开“文件”应用程序之前。 因此,您需要离线准备工作集数据。 WWDC 2017 document可能会有帮助。