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:它应该存在于照相胶卷中,我只是将其从相册中删除。你试过那个密码吗?它不起作用。而被检索的东西资产是不可编辑的,这就是为什么它不能继续下去。