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

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

  1. 当我使用 UIImagePickerController 进行选择时
  2. 然后我从资产/相册中选择一个视频
  3. 在信息字典中我得到了关于 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";
    }
    
  4. 我想删除在 UIImagePickerControllerReferenceURL 或资产/专辑视频中选择的文件

【问题讨论】:

    标签: ios iphone ipad ios8


    【解决方案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 方法。我没有检查过,但认为这就是它的工作方式。检查这个 - stackoverflow.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));
    }];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2012-05-07
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多