phResourceManager.writeData(for… wont run on iOS 14

I have a solution to this! Swift 4+, tested on iOS 14!

I looked through using a PHAssetResourceRequest, but the file names were messed with in the process, and it generally didn’t work with my sandbox. Then I also tried requesting a AVPlayerItem from the PHAsset but this too, did not work with sandboxing…

But then, I tried simply using PHAssetResourceManager.default().writeData(… and seemingly started working!

I tested a bit more and seemed to work, here is the full code:

                    let resource = PHAssetResource.assetResources(for: (cell?.assetPH)!)
                    let resourceRequestOptions = PHAssetResourceRequestOptions() 
                    let newURL = ExistingMediaVC.newFileUrl
                    PHAssetResourceManager.default().writeData(for: resource.last!, toFile: newURL!, options: resourceRequestOptions) { (error) in
                        if error != nil {
                            print(error, "error")
                        } else {
                            newUserTakenVideo.videoURL = newURL

It is quite simple!! Tell me if anything is not working, and note I still use the ExisitingMedia.fileURL variable you used in your original code as well 🙂

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top