Нужна помощь в отношении перечисления ALAssetsLibrary

[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 ответ

Решение

Использовать 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
}];
Другие вопросы по тегам