首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道块何时完成枚举ALAssetsLibrary

如何知道块何时完成枚举ALAssetsLibrary
EN

Stack Overflow用户
提问于 2014-10-01 01:56:26
回答 1查看 1.3K关注 0票数 0

我枚举ALAssetsLibrary以了解我的照片库有哪些组,

我如何知道块何时停止枚举?

代码语言:javascript
复制
NSMutableArray *albumsArray = [NSMutableArray array];

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

[library enumerateGroupsWithTypes:ALAssetsGroupAll
                       usingBlock: ^(ALAssetsGroup *group, BOOL *stop){
                           if ([group valueForProperty:ALAssetsGroupPropertyName] != nil) {
                               [albumsArray addObject:[group valueForProperty:ALAssetsGroupPropertyName]];
                           }
                           NSLog(@"tu arraya :: %@", albumsArray);
                           //tha pics?
                           [group enumerateAssetsUsingBlock:  ^(ALAsset *result, NSUInteger index, BOOL *stop){
                               // ---> ALAsset:
                               NSLog(@"     Stop? %@", (stop ? @"YES" : @"NO") );
                           }];
                       }
                     failureBlock: ^(NSError *error) {
                         NSLog(@"Failure");
                     }];
NSLog(@"tu arraya 1:: %@", albumsArray);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-01 03:07:56

if (group == nil)语句之后检查enumerateAssetsUsingBlock

见下文:

代码语言:javascript
复制
NSMutableArray *albumsArray = [NSMutableArray array];

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

[library enumerateGroupsWithTypes:ALAssetsGroupAll
                       usingBlock: ^(ALAssetsGroup *group, BOOL *stop){
                           if ([group valueForProperty:ALAssetsGroupPropertyName] != nil) {
                               [albumsArray addObject:[group valueForProperty:ALAssetsGroupPropertyName]];
                           }
                           NSLog(@"tu arraya :: %@", albumsArray);
                           //tha pics?
                           [group enumerateAssetsUsingBlock:  ^(ALAsset *result, NSUInteger index, BOOL *stop){
                               // ---> ALAsset:
                               NSLog(@"     Stop? %@", (stop ? @"YES" : @"NO") );
                           }];

                           // this is the end of enumeration
                           if (group == nil)
                           {
                               NSLog(@"THE END!!!");
                           }
                       }
                     failureBlock: ^(NSError *error) {
                         NSLog(@"Failure");
                     }];
NSLog(@"tu arraya 1:: %@", albumsArray);

另外,你真的应该考虑打破你的积木,使事情更容易阅读。例如:

代码语言:javascript
复制
NSMutableArray *albumsArray = [NSMutableArray array];
ALAssetsLibrary *library = [BMBAssetManager defaultAssetsLibrary];

void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) =
    ^(ALAsset *result, NSUInteger index, BOOL *stop)
    {
        // ---> ALAsset:
        NSLog(@"     Stop? %@", (stop ? @"YES" : @"NO") );
    };

void (^assetGroupEnumerator)( ALAssetsGroup *, BOOL *) =
    ^(ALAssetsGroup *group, BOOL *stop){
        if ([group valueForProperty:ALAssetsGroupPropertyName] != nil) {
            [albumsArray addObject:[group valueForProperty:ALAssetsGroupPropertyName]];
        }
        NSLog(@"tu arraya :: %@", albumsArray);
        //tha pics?
        [group enumerateAssetsUsingBlock:assetEnumerator];

        // this is the end of enumeration
        if (group == nil)
        {
            NSLog(@"THE END!!!");
        }

    };

[library enumerateGroupsWithTypes:ALAssetsGroupAll
                       usingBlock:assetGroupEnumerator
                     failureBlock: ^(NSError *error) {
                         NSLog(@"Failure");
                     }];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26132966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档