Узнайте, когда мой асинхронный вызов закончен
Я перебираю список фотоальбомов на устройстве iOS. После перебора этой группы я хочу просто распечатать количество найденных альбомов.
Что я должен изменить в своем коде, чтобы NSLog
Оператор выполняется только тогда, когда все альбомы были загружены.
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSMutableArray *tempArray = [[NSMutableArray alloc] init];
void (^groupBlock)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){
if (group == nil){return;}
[tempArray addObject:group];
};
void (^failureBlock)(NSError *) = ^(NSError *error) {
NSLog(@"A problem occured %@", [error description]);
};
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:groupBlock
failureBlock:failureBlock];
NSLog(@"%i albums were loaded", tempArray.count);
1 ответ
Решение
Ваш groupBlock
получит группу nil
когда перечисление завершено, измените:
if (group == nil){return;}
в
NSLog(@"%i albums were loaded", tempArray.count);
Из ссылки на класс:
Когда перечисление выполнено, enumerationBlock вызывается с группой, установленной в
nil
,