需要有关ALAssetsLibrary枚举的帮助

时间:2014-04-25 04:59:15

标签: ios objective-c alassetslibrary alassetsgroup

[aLib  enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:assetsGroupEnumerationBlock failureBlock:failureBLock];

此方法枚举每个组,我想枚举第一组,然后我想打破它。我的目的是要求iOS第一次弹出的权限。我没有做任何额外的工作,我在通知和触发其他所需功能的块中有通知。但是多个组枚举会多次触发通知并且我想要停止。

这是我的带有停止参数的枚举块

void(^assetsGroupEnumerationBlock)(ALAssetsGroup*, BOOL*) = ^(ALAssetsGroup *groups, BOOL *stop) {
    *stop = YES;
    NSDictionary *alAuthDict = @{@"alAssetsAuthStatusDictKey" : [NSString stringWithFormat:@"%ld",[self getALAssetAuthorizationStatus]]};
    [[NSNotificationCenter defaultCenter]postNotificationName:@"alAssetsStatusNotificationName" object:nil userInfo:alAuthDict];
};

但是通知被调用两次,我在控制台中看到nslog两次。

1 个答案:

答案 0 :(得分:2)

使用stop参数:

[lib enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
    *stop = YES;
    if (group) {
        NSDictionary *alAuthDict = @{@"alAssetsAuthStatusDictKey" : [NSString stringWithFormat:@"%ld",[self getALAssetAuthorizationStatus]]};
        [[NSNotificationCenter defaultCenter]postNotificationName:@"alAssetsStatusNotificationName" object:nil userInfo:alAuthDict];
    }
} failureBlock:^(NSError *error) {
    // denied
}];