Ios 从自定义相册PHPhotoLibrary目标C中删除图像

Ios 从自定义相册PHPhotoLibrary目标C中删除图像,ios,objective-c,photos,alassetslibrary,photosframework,Ios,Objective C,Photos,Alassetslibrary,Photosframework,在我的应用程序中,我使用编辑图片并保存在名为“Fab”的图库中的自定义文件夹中。现在有什么东西可以从文件夹中删除该图像吗?我找到了不同的解决方案,但它们需要资产URL。我使用了Photos框架,所以如何获取特定图像的资源url以进行删除?尝试下面的代码 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeImageToSavedPhotosAlbum:[viewImage CGImage] ori

在我的应用程序中,我使用编辑图片并保存在名为“Fab”的图库中的自定义文件夹中。现在有什么东西可以从文件夹中删除该图像吗?我找到了不同的解决方案,但它们需要资产URL。我使用了Photos框架,所以如何获取特定图像的资源url以进行删除?

尝试下面的代码

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];  

[library writeImageToSavedPhotosAlbum:[viewImage CGImage] orientation:(ALAssetOrientation)[viewImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){  
    if (error) {  
        NSLog(@"error");  
    } else {  
            NSLog(@"url %@", assetURL);  
    }  
}];  
将返回保存图像的url。

请尝试以下代码

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];  

[library writeImageToSavedPhotosAlbum:[viewImage CGImage] orientation:(ALAssetOrientation)[viewImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){  
    if (error) {  
        NSLog(@"error");  
    } else {  
            NSLog(@"url %@", assetURL);  
    }  
}];  
 PHAsset *tempPhasset = [_arrImageForAssetCameraRoll objectAtIndex:index]; // here pass your PHasset that you want to delete .
 NSString *localStr=tempPhasset.localIdentifier;
 NSRange range = [localStr rangeOfString:@"/"];
 NSString *newString = [localStr substringToIndex:range.location];
 NSString *appendedString=[NSString stringWithFormat:@"%@%@%@",@"assets-library://asset/asset.JPG?id=",newString,@"&ext=JPG"];
 NSLog(@"%@ phasset ",appendedString);
 NSURL *deleteurl = [NSURL URLWithString:appendedString];
 NSArray *arrDelete = [[NSArray alloc] initWithObjects:deleteurl , nil];
 PHFetchResult *asset = [PHAsset fetchAssetsWithALAssetURLs:arrDelete  options:nil];

 [asset enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            NSLog(@"%@",[obj class]);
            [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
                BOOL req = [obj canPerformEditOperation:PHAssetEditOperationDelete];
                if (req) {
                    NSLog(@"true");
                    [PHAssetChangeRequest deleteAssets:@[obj]];
                }
            } completionHandler:^(BOOL success, NSError *error) {
                NSLog(@"Finished Delete asset. %@", (success ? @"Success." : error));
                if (success) {
                    NSLog(@"delete successfully");
                }else{
                    NSLog(@"delete Cancel");

                }
 }];
将返回已保存图像的url

 PHAsset *tempPhasset = [_arrImageForAssetCameraRoll objectAtIndex:index]; // here pass your PHasset that you want to delete .
 NSString *localStr=tempPhasset.localIdentifier;
 NSRange range = [localStr rangeOfString:@"/"];
 NSString *newString = [localStr substringToIndex:range.location];
 NSString *appendedString=[NSString stringWithFormat:@"%@%@%@",@"assets-library://asset/asset.JPG?id=",newString,@"&ext=JPG"];
 NSLog(@"%@ phasset ",appendedString);
 NSURL *deleteurl = [NSURL URLWithString:appendedString];
 NSArray *arrDelete = [[NSArray alloc] initWithObjects:deleteurl , nil];
 PHFetchResult *asset = [PHAsset fetchAssetsWithALAssetURLs:arrDelete  options:nil];

 [asset enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            NSLog(@"%@",[obj class]);
            [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
                BOOL req = [obj canPerformEditOperation:PHAssetEditOperationDelete];
                if (req) {
                    NSLog(@"true");
                    [PHAssetChangeRequest deleteAssets:@[obj]];
                }
            } completionHandler:^(BOOL success, NSError *error) {
                NSLog(@"Finished Delete asset. %@", (success ? @"Success." : error));
                if (success) {
                    NSLog(@"delete successfully");
                }else{
                    NSLog(@"delete Cancel");

                }
 }];
对我的代码进行任何查询,然后发表评论。 快乐编码。

对我的代码进行任何查询,然后发表评论。

快乐编码。

你解决了你的问题吗?需要帮助吗?感谢帮助。检查我的答案它解决了你的问题,因为我在我的项目中使用了此代码。让我检查一下……好的,检查一下,告诉你是否遇到了任何问题你解决了你的问题吗?需要帮助吗?感谢帮助。检查我的答案它解决了你的问题,因为我在我的项目中使用此代码。让我检查一下……好的,检查一下,并告诉您库中遇到的任何问题是否已被弃用。我用了一套。所以这不是答案,因为我们不推荐使用这个库。我用了一套。因此,这不是如何删除多个图像阵列资源的答案?@RamaniHitesh这里是您通过阵列并从您的相机卷中删除所有资源的循环。@RamaniHitesh我在我的旧项目中使用相同的代码,其工作文件完全相同。但是先生,我这边不工作,请尝试这一个代码,然后让我知道如何删除多个图像阵列资源删除?@RamaniHitesh这里是您通过阵列并从您的相机卷中删除所有资源的循环。@RamaniHitesh我在我的旧项目及其工作文件中使用相同的代码。但是先生,我的一方不工作,请尝试此代码,然后让我知道是否可能