ALAssets组枚举:如何检查完成? [英] ALAssets groups enumeration: how to check for completion?

查看:58
本文介绍了ALAssets组枚举:如何检查完成?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

ALAssets使用一个单独的线程来管理枚举,我必须知道枚举何时终止。

ALAssets use a separated thread to manage enumeration, i have to know when enumeration terminate.

组枚举的块原型是:

typedef void(^ ALAssetsLibraryGroupsEnumerationResultsBlock)(ALAssetsGroup * group,BOOL * stop);

如何添加完成块?

推荐答案

我找到了一个仅部分记录的解决方案。

I found a solution that is documented only in part.

当组枚举终止时,将使用group = nil调用ALAssetsLibraryGroupsEnumerationResultsBlock。所以你可以这样写:

When group enumeration is terminated, ALAssetsLibraryGroupsEnumerationResultsBlock is invoked with group=nil. So you can write something like:

void (^groupsEnumerator)(ALAssetsGroup *,BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){ 
    if (group != nil) {
        [group enumerateAssetsUsingBlock:assetsEnumerator];

    }else {
        NSLog(@"group enumeration terminated");
    }
}; 

相同的解决方案对资产枚举有效(未记录 - .-)

The same solution is valid for assets enumeration (this is not documented -.- )

 void (^assetsEnumerator)(ALAsset *,NSUInteger,BOOL*) = ^(ALAsset *result, NSUInteger index, BOOL *stop){    
    if (result !=nil) {
       //do something with result asset

    }else {
        NSLog(@"Assets enumeration terminated");
    }
};

这篇关于ALAssets组枚举:如何检查完成?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆