ALAssetsLibrary delete ALAssetsGroup / ALAsset

前端 未结 6 1528
终归单人心
终归单人心 2020-12-09 23:20

I have created \"photos album\" from my App, using IOS AssetsLibrary.

Reading ALAssetsLibrary,ALAssetsGroup and ALAsset documentations, i have seen methods to \"addA

6条回答
  •  执笔经年
    2020-12-09 23:45

    You can only delete the ALAsset which is created by your app with document API [ALAsset setImageData:metadata:completionBlock:] (But I have not found any API to delete a ALAssetGroup).

    1). Add an image "photo.jpg" to your project 2). Save an image to asset library:

    ALAssetsLibrary *lib = [ALAssetsLibrary new];
    UIImage *image = [UIImage imageNamed:@"photo.jpg"];
    [lib writeImageToSavedPhotosAlbum:image.CGImage metadata:@{} completionBlock:^(NSURL *assetURL, NSError *error) {
        NSLog(@"Write image %@ to asset library. (Error %@)", assetURL, error);
    }];
    

    3). Go to default gallery, you will find photo.jpg in your "Saved Photos" album.

    4). Delete this image from asset library:

    ALAssetsLibrary *lib = [ALAssetsLibrary new];
    [lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
            if(asset.isEditable) {
                [asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
                    NSLog(@"Asset url %@ should be deleted. (Error %@)", assetURL, error);
                }];
            }
        }];
    } failureBlock:^(NSError *error) {
    
    }];
    

    5). Go to default gallery, you will find photo.jpg has already been deleted.

提交回复
热议问题