ALAssets组枚举:如何检查完成?

ALAssets使用分离的线程来pipe理枚举,我必须知道枚举何时终止。

组枚举的块原型是:

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

我怎样才能添加完成块?

我发现一个解决scheme只是部分logging。

当组枚举被终止时,ALAssetsLibraryGroupsEnumerationResultsBlock被调用,组= nil。 所以你可以写下如下的东西:

 void (^groupsEnumerator)(ALAssetsGroup *,BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){ if (group != nil) { [group enumerateAssetsUsingBlock:assetsEnumerator]; }else { NSLog(@"group enumeration terminated"); } }; 

同样的解决scheme对于资产枚举是有效的(这没有logging – )

  void (^assetsEnumerator)(ALAsset *,NSUInteger,BOOL*) = ^(ALAsset *result, NSUInteger index, BOOL *stop){ if (result !=nil) { //do something with result asset }else { NSLog(@"Assets enumeration terminated"); } }; 

我正在使用这个:

  [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { if (result == nil) { return; } if (index + 1 == group.numberOfAssets) { //Do what you want. Im using delegate to notify my parent class about finish. [delegate didGroupEnumerated:group]; } }];