I'm trying to get a list of photo albums available in the device using the reference from here:
So far I have this in my viewDidLoad:
// Get albums
NSMutableArray *groups = [NSMutableArray new];
ALAssetsLibrary *library = [ALAssetsLibrary new];
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[groups addObject:group];
}
};
NSUInteger groupTypes = ALAssetsGroupAlbum;
[library enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:nil];
NSLog(@"%@", groups);
However, nothing is added to the groups array. I am expecting to see 2 items from the NSLog.
It looks like the response comes in the async response listGroupBlock, but your NSLog comes right after the call. So groups will still be empty and won't be populated in the current thread yet.
What about adding the logging in listGroupBlock?
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[groups addObject:group];
}
NSLog(@"%@", groups);
// Do any processing you would do here on groups
[self processGroups:groups];
// Since this is a background process, you will need to update the UI too for example
[self.tableView reloadData];
};
For IOS9 onwards ALAsset library has been deprecated. Instead the Photos Framework has been introduced with a new asset type called PHAsset. You can retrieve albums using PHAssetCollection class.
PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
PHAssetCollectionType defines the type of the albums. You can iterated the fetchResults to get each album.
[userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop) {}];
Album in photos framework is represented by PHAssetCollection.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With