Как сохранить изображения в определенную папку в iOS 9.0

Уже есть ответы для сохранения изображений в определенную папку с помощью ALAssetsLibrary. Но это не рекомендуется в iOS 9.0 и выдает предупреждение "Используйте PHPhotoLibrary из фреймворка Photos".

Когда я меняю ALAssetsLibrary на PHPhotoLibrary, получаю ошибку на этом этапе.

    [self.library saveImage:image toAlbum:@"myAlbum" withCompletionBlock:^(NSError *error) {
    if (error!=nil) {
        NSLog(@"Big error: %@", [error description]);
    }
}];

*ошибка

 No visible @interface for 'PHPhotoLibrary' declares the selector 'saveImage:toAlbum:withCompletionBlock:' 

Как сохранить изображения в определенную папку с помощью PHPhotoLibrary (или) любых других решений.

Заранее спасибо.

2 ответа

Решение

Я не пользовалась PHPhotoLibrary но я знаю старый способ сохранения фотографий в Obj-C, используя локальный каталог документов:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = paths.firstObject;
NSData *imageData = UIImagePNGRepresentation(image);

NSString *imagePath = [NSString stringWithFormat:@"%@/%@",documentsDirectory,imageFolder];

BOOL isDir;
NSFileManager *fileManager= [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:imagePath isDirectory:&isDir])
    if(![fileManager createDirectoryAtPath:imagePath withIntermediateDirectories:YES attributes:nil error:NULL])
        NSLog(@"Error: folder creation failed %@", documentsDirectory);

[[NSFileManager defaultManager] createFileAtPath:[NSString stringWithFormat:@"%@/%@", imagePath, imageName] contents:nil attributes:nil];
[imageData writeToFile:[NSString stringWithFormat:@"%@/%@", imagePath, imageName] atomically:YES];

Чтобы получить это изображение из NSDocumentDirectory:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = paths.firstObject;
NSString *fullPath = [NSString stringWithFormat:@"%@/%@", documentDirectory, imagePath]; // image path is same as above
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) {
    UIImage *image = [UIImage imageWithContentsOfFile:fullPath];
    return image;
} else {
    return nil;
}

Потому что нет метода, названного так.

Для сохранения изображений в PHPhotoLibrary вам необходимо создать актив. Увидеть

Какой PHAssetCollection использовать для сохранения изображения?

для подробной информации.

Другие вопросы по тегам