Ios 如何上传PHAsset(仅视频和图像)?

Ios 如何上传PHAsset(仅视频和图像)?,ios,objective-c,phasset,Ios,Objective C,Phasset,我想上传PHAsset,但我没有资产的文件路径。我能够上传文件使用下面的块方法。但这些都是获取URL的异步方法。是否有任何同步方法或任何其他方式来上载PHAsset文件 图像资源URL: [asset requestContentEditingInputWithOptions:editOptions completionHandler:^(PHContentEditingInput *contentEditingInput, NSDi

我想上传PHAsset,但我没有资产的文件路径。我能够上传文件使用下面的块方法。但这些都是获取URL的异步方法。是否有任何同步方法或任何其他方式来上载PHAsset文件

图像资源URL:

[asset requestContentEditingInputWithOptions:editOptions
                               completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
        NSURL *imageURL = contentEditingInput.fullSizeImageURL;
    }];
视频文件URL:

[[PHImageManager defaultManager]requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {

                    NSURL *url = (NSURL *)[[(AVURLAsset *)asset URL] fileReferenceURL];




                }]; 

我正在从PHAsset获取视频,并将其存储到本地文件路径以将其上载到服务器:以下是代码:

let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate",ascending:false)]
assets = PHAsset.fetchAssets(with:fetchOptions)

let resourceManager = PHAssetResourceManager.default()
let resource = PHAssetResource.assetResources(for: asset).first!
let name = resource.originalFilename
let videoLocalPath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name)

//Storing the resource to local temporary path    
resourceManager.writeData(for: resource, toFile: videoLocalPath, options: nil, completionHandler: {error in
        if error != nil{
//       on success do the upload using the local file path
        }
    })

希望有帮助

我们必须处理这些异步方法。并考虑URL为零的文件。这样的文件不会出现在本地设备上,而是出现在iCloud上。谢谢,这对我很有帮助。我也这么认为。原因是该应用程序在沙箱中运行,您无法真正更改或直接从照片文件夹复制。我找了很多地方,但都是这样。您必须创建一个本地副本并使用它。