首页 > 解决方案 > 如何使用 PHPickerViewControllerDelegate 获取本地库中视频的缩略图和数据

问题描述

我正在尝试使用PHPickerViewControllerDelegate和实施- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results. 我想:

  1. 上传我从 PHPickerViewController 中选择的视频;

  2. 展示我选择的视频的缩略图。

这是我的代码:


    - (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results  API_AVAILABLE(ios(14)){
    PHPickerResult *result = results[0];
        NSItemProvider *itemProvider = result.itemProvider;
        SFFUploadAsset *uploadAsset = [SFFUploadAsset new];
        if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeMovie]) {
            [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeMovie options:nil completionHandler:^(__kindof id<NSSecureCoding>  _Nullable url, NSError * _Null_unspecified error) {
    
    // *The line below does NOT work and return nil; also fetchAssetsWithALAssetURLs will deprecate soon!! What should I do to get the selected video data ???*
    
                PHAsset *asset = [PHAsset fetchAssetsWithALAssetURLs:@[url] options:nil][0];
                PHImageManager *photoImageManager = [PHImageManager defaultManager];
                PHImageRequestOptions *requestOptions = [PHImageRequestOptions new];
                requestOptions.synchronous = YES;
                requestOptions.networkAccessAllowed = YES;
                [photoImageManager requestImageDataForAsset:asset options:requestOptions resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
                    uploadAsset.data = imageData;
                }];
            }];
        }
    }

我的问题是:如何正确使用 NSItemProvider 传递所选视频的数据?我做错了吗?谢谢你们!!!!!

标签: objective-cuiimagepickercontrollerios14phassetphphotolibrary

解决方案


推荐阅读