Я пытаюсь сохранить некоторые изображения, которые я создаю для альбома, используя ALAssetLibrary
, используя ALAssetsLibrary + CustomPhotoAlbum от Marin Todorov. Тем не менее, я получаю случайные сбои большую часть времени.Ошибка при сохранении альбома с использованием ALAssetLibrary
// Get the asset library instance.
ALAssetsLibrary *library = [ALAssetLibraryManager defaultAssetsLibrary];
[self.imageModels enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// Sidenote: Trying to use an image that I have locally in my image assets fails as well.
// UIImage *image = [UIImage imageNamed:@"Background-light-png.png"];
UIImage *image = [UIImage imageWithContentsOfFile:[obj valueForKey:@"imagePath"]];
[_imagesToShare addObject:image];
if (image){
[library saveImage:image toAlbum:@"My Album" completion:^(NSURL assetURL, NSError error) {
NSLog(@"Success");
} failure:^(NSError *error) {
NSLog(@"Failed %@", error.description);
}];
}
}];
В блоке отказа, если добавить следующий код, я могу видеть, что изображение будет сохранено в Camera Roll.
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
Ошибки я получаю
Failed: Error Domain=LIB_ALAssetsLibrary_CustomPhotoAlbum Code=0 "ALAssetsGroup failed to add asset." UserInfo=0x171277c80 {NSLocalizedDescription=ALAssetsGroup failed to add asset.}
Код для получения библиотеки активов
+ (ALAssetsLibrary *)defaultAssetsLibrary {
static dispatch_once_t pred = 0;
static ALAssetsLibrary *library = nil;
dispatch_once(&pred, ^{
library = [[ALAssetsLibrary alloc] init];
});
return library;
}
Я искал много, но не мог найти много на эту тему. Мой метод вызывается из нажатия кнопки, и в то же время не должно происходить никаких других операций. Единственная информация, которую я нашел в Интернете, заключалась в том, что вы должны хранить один и тот же экземпляр ALAssetLibrary, который я сделал с использованием класса singleton.