Skip to content

Instantly share code, notes, and snippets.

@tLewisII
Created January 27, 2014 20:12
Show Gist options
  • Save tLewisII/8656314 to your computer and use it in GitHub Desktop.
Save tLewisII/8656314 to your computer and use it in GitHub Desktop.
Saving many photos to the camera roll.
- (void)saveImages:(NSArray *)images toGroup:(ALAssetsGroup *)group next:(void (^)(NSData *imageData))next error:(void (^)(NSError *))errorBlock completion:(void (^)())block {
dispatch_queue_t queue = dispatch_queue_create("com.photoShare.saveToCameraRoll", NULL);
[images enumerateObjectsUsingBlock:^(PPSAsset *obj, NSUInteger idx, BOOL *stop) {
dispatch_async(queue, ^{
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
[self.library writeImageDataToSavedPhotosAlbum:obj.fullImageData metadata:obj.metaData completionBlock:^(NSURL *assetURL, NSError *error) {
if(error) {
errorBlock(error);
}
else {
[self.library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
[group addAsset:asset];
if(next) next(obj.fullImageData);
dispatch_semaphore_signal(sema);
if(idx == images.count - 1) {
dispatch_async(dispatch_get_main_queue(), ^{
block();
});
}
} failureBlock:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
errorBlock(error);
});
}];
}
}];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
});
}];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment