簡體   English   中英

ALAssets 組枚舉:如何檢查是否完成?

[英]ALAssets groups enumeration: how to check for completion?

ALAssets 使用一個單獨的線程來管理枚舉,我必須知道枚舉何時終止。

組枚舉的塊原型是:

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

如何添加完成塊?

我找到了一個僅部分記錄的解決方案。

當組枚舉終止時,使用 group=nil 調用 ALAssetsLibraryGroupsEnumerationResultsBlock。 因此,您可以編寫如下內容:

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

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

相同的解決方案對資產枚舉有效(未記錄 -.- )

 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];
        }

    }];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM