Нужна помощь в отношении перечисления 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
}];