Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从相册中删除资产而不从照片应用程序中删除资产/照片?_Ios_Objective C_Alassetslibrary_Photosframework - Fatal编程技术网

Ios 如何从相册中删除资产而不从照片应用程序中删除资产/照片?

Ios 如何从相册中删除资产而不从照片应用程序中删除资产/照片?,ios,objective-c,alassetslibrary,photosframework,Ios,Objective C,Alassetslibrary,Photosframework,我想以编程方式从相册中删除重复的资产(照片不是)。我可以使用照片框架删除相册 我想知道如何从相册中删除资产,而不从照片应用程序中完全删除它。我想在多个地方使用它,例如将资产从一个相册移动到另一个相册,等等 相册是可编辑的,因为我已经创建了它们 在使用iOS 6或iOS 7的设备中,有没有办法做到这一点?您可以将该图像的imageData设置为nil,这样您就可以删除图像 ALAssetsLibrary *lib = [ALAssetsLibrary new]; [lib enumerateGro

我想以编程方式从相册中删除重复的资产(照片不是)。我可以使用照片框架删除相册

我想知道如何从相册中删除资产,而不从照片应用程序中完全删除它。我想在多个地方使用它,例如将资产从一个相册移动到另一个相册,等等

相册是可编辑的,因为我已经创建了它们


在使用iOS 6或iOS 7的设备中,有没有办法做到这一点?

您可以将该图像的
imageData
设置为nil,这样您就可以删除图像

ALAssetsLibrary *lib = [ALAssetsLibrary new];
[lib enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
     if(group == nil)
     {
          return ;
     }

     if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"YourAlbumNam"])
    {
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
        {
             if(asset.isEditable)
             {
                 if([[asset valueForProperty:ALAssetPropertyAssetURL] isEqual:yourAssetURL] )
                 {
                       [asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error)
                       {
                             // Check for error
                       }];
                 }
              }
        }];
    }                
failureBlock:^(NSError *error)
{

}];

您可以将该图像的
imageData
设置为nil,这样您就可以删除图像

ALAssetsLibrary *lib = [ALAssetsLibrary new];
[lib enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
     if(group == nil)
     {
          return ;
     }

     if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"YourAlbumNam"])
    {
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
        {
             if(asset.isEditable)
             {
                 if([[asset valueForProperty:ALAssetPropertyAssetURL] isEqual:yourAssetURL] )
                 {
                       [asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error)
                       {
                             // Check for error
                       }];
                 }
              }
        }];
    }                
failureBlock:^(NSError *error)
{

}];

在iOS 8及更高版本中,您可以使用以下代码从相册中删除照片,而无需从照片应用程序中完全删除照片

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest
        changeRequestForAssetCollection:self.myAlbum
                                 assets:self.albumAssetsFetchResult];
    [request removeAssets:@[asset]];

} completionHandler:^(BOOL success, NSError *error) {
    NSLog(@"Finished removing asset from the album. %@", (success ? @"Success" : error));
}];
代码在以下链接中提供:

在iOS 8及更高版本中,您可以使用以下代码从相册中删除照片,而无需从照片应用程序中完全删除照片

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest
        changeRequestForAssetCollection:self.myAlbum
                                 assets:self.albumAssetsFetchResult];
    [request removeAssets:@[asset]];

} completionHandler:^(BOOL success, NSError *error) {
    NSLog(@"Finished removing asset from the album. %@", (success ? @"Success" : error));
}];
代码在以下链接中提供:

Tgiri答案的Swift 4版本,如果对任何人都有帮助:

// you want to pass in your asset collection and asset
let album: PHAssetCollection 
let asset: PHAsset

PHPhotoLibrary.shared().performChanges({
            guard let albumChangeRequest = PHAssetCollectionChangeRequest(for: album) else { return }
            let fastEnumeration = NSArray(array: [asset])
            albumChangeRequest.removeAssets(fastEnumeration)
        }, completionHandler: { success, error in
        if success {
            print("removed")
        } else {
            print("not removed")
        }
    })

Tgiri答案的Swift 4版本,如果对任何人都有帮助:

// you want to pass in your asset collection and asset
let album: PHAssetCollection 
let asset: PHAsset

PHPhotoLibrary.shared().performChanges({
            guard let albumChangeRequest = PHAssetCollectionChangeRequest(for: album) else { return }
            let fastEnumeration = NSArray(array: [asset])
            albumChangeRequest.removeAssets(fastEnumeration)
        }, completionHandler: { success, error in
        if success {
            print("removed")
        } else {
            print("not removed")
        }
    })

我不想删除该资产。我只想从相册中删除它。它应该存在于摄像机中roll@ShravyaBoggarapu:它应该存在于照相胶卷中,我只是将其从相册中删除。你试过那个密码吗?它不起作用。检索到的东西资产是不可编辑的,这就是它不能继续的原因。我不想删除资产。我只想从相册中删除它。它应该存在于摄像机中roll@ShravyaBoggarapu:它应该存在于照相胶卷中,我只是将其从相册中删除。你试过那个密码吗?它不起作用。而被检索的东西资产是不可编辑的,这就是为什么它不能继续下去。