(void)loadItem:(NSURL *)url withSuccessBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock andFailureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock {
ALAssetsLibrary *assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:url
resultBlock:^(ALAsset *asset)
{
if (asset){
//
// SUCCESS POINT #1 - asset is what we are looking for
//
resultBlock(asset);
}
else {
// On iOS 8.1 [library assetForUrl] Photo Streams always returns nil. Try to obtain it in an alternative way
[assetslibrary enumerateGroupsWithTypes:ALAssetsGroupPhotoStream
usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if([result.defaultRepresentation.url isEqual:url])
{
///
// SUCCESS POINT #2 - result is what we are looking for
///
resultBlock(result);
*stop = YES;
}
}];
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset from photo stream - %@", [error localizedDescription]);
failureBlock(error);
}];
}
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset - %@", [error localizedDescription]);
failureBlock(error);
}
];
}