问题
I iterate through a list of photo albums on a iOS device. After having iterated through this group I want to simply print out the number of albums that were found.
What do I have to change in my code that the NSLog
statement is only executed, when all the albums were loaded.
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:
Your groupBlock
will receive a group of nil
when the enumeration is completed, so change:
if (group == nil){return;}
to
NSLog(@"%i albums were loaded", tempArray.count);
From the Class reference:
When the enumeration is done, enumerationBlock is invoked with group set to
nil
.
[source]
来源:https://stackoverflow.com/questions/8474887/find-out-when-my-asynchronous-call-is-finished