从资产或相册中删除一个视频

Posted

技术标签:

【中文标题】从资产或相册中删除一个视频【英文标题】:delete one video from asset or album 【发布时间】:2015-04-08 06:18:34 【问题描述】:

如何在 ios8 中从资产/相册中删除一个视频

    当我使用 UIImagePickerController 进行选择时 然后我从资产/相册中选择一个视频

    在信息字典中我得到了关于 didFinishPickingMediaWithInfo 方法的响应

     
        UIImagePickerControllerMediaType = "public.movie";
    
        UIImagePickerControllerMediaURL = "file:///Users/appaspect2/Library/Developer/CoreSimulator/Devices/A61DFE3B-8BA0-4A18-939A-2B0BC2F6084E/data/Containers/Data/Application/69E55783-CB4F-4620-9C81-B3948F5A843B/tmp/trim.1202C1FA-6130-4BC7-AA31-391CC7E0D7B6.MOV";
    
        UIImagePickerControllerReferenceURL = "assets-library://asset/asset.MOV?id=189B68BD-17D0-4665-A065-11A40B0F2B25&ext=MOV";
    
    

    我想删除在 UIImagePickerControllerReferenceURL 或资产/专辑视频中选择的文件

【问题讨论】:

【参考方案1】:

AssestsLibrary 没有任何此类方法。但是在搜索了这个之后,我发现在 ios8 中删除照片可能可以使用照片框架

查看 Photos Framework 的文档

要删除资产,请参阅 PHAssetChangeRequest

+ (void)deleteAssets:(id<NSFastEnumeration>)assets

【讨论】:

如果我有一个 URL "assets-library://asset/asset.MOV?id=189B68BD-17D0-4665-A065-11A40B0F2B25&ext=MOV" 那么如何通过它呢? [[phphotoLibrary sharedPhotoLibrary] performChanges:^ [PHAssetChangeRequest deleteAssets:videoURL]; completionHandler:^(BOOL success, NSError *error) NSLog(@"完成删除资产。%@", (success ?@"Success." : error)); ]; 您可以从文件 url 获取 PHAsset,然后将其传递给 deleteAssets 方法。我没有检查过,但认为这就是它的工作方式。检查这个 - ***.com/questions/28661938/… 我试过 PHFetchResult *asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] firstObject]; NSLog(@"资产 %@",资产);和我得到的输出: 79667072-F045-4B27-9B0E-75EACA6B9652/L0/001 mediaType=2/0,assetSource=0, (713x320), creationDate=2013-05-24 06:52:12 + 0000, location=1, hidden=0, favorite=0 但是当我通过它时。会崩溃的。 检查这个链接 - github.com/JaviSoto/iOS8-Runtime-Headers/blob/master/Frameworks/… 你必须得到 - (id)ALAssetURL;并通过这个。试试这个,希望它有效。【参考方案2】:

我终于能够删除仅适用于 iOS8 的资产/专辑视频文件。

你可以在didFinishPickingMediaWithInfo方法中添加这个

PHFetchResult *asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] firstObject];
NSLog(@"asset %@",asset);

[self toggleFavoriteForAsset:(PHAsset *)asset];

并添加一种删除资产视频的方法

- (void)toggleFavoriteForAsset:(PHAsset *)asset 
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
    // Create a change request from the asset to be modified.
    BOOL req = [asset canPerformEditOperation:PHAssetEditOperationDelete];
    if (req) 
        NSLog(@"true");
        [PHAssetChangeRequest deleteAssets:@[asset]];
    
 completionHandler:^(BOOL success, NSError *error) 
    NSLog(@"Finished Delete asset. %@", (success ? @"Success." : error));
];

【讨论】:

以上是关于从资产或相册中删除一个视频的主要内容,如果未能解决你的问题,请参考以下文章

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

如何从智能相册加载资产? (展览媒体库)

iOS - 为啥相同的资产有不同的资产URL?

使用照片框架从照片库中删除照片

从IOS中的相册或库中删除照片[关闭]

除了相机胶卷,如何从 iPhone 中获取所有资产?