如何使用PHPhotoLibrary保存GIF?

我有一个应用程序,显示来自互联网的GIF,我想添加保存GIF到相机胶卷的能力。 我正在使用PHPhotoLibrary ,并试图用我在几个SO问题中看到的方法将它保存到相机胶卷上,例如:

 func saveToCameraRoll(imageUrl: String) { PHPhotoLibrary.shared().performChanges({ _ in let createRequest = PHAssetChangeRequest.creationRequestForAssetFromImage( atFileURL: URL(string: imageUrl)!) }) { success, error in guard success else { log.debug("failed to save gif \(error)") return } log.debug("successfully saved gif") } } 

但是,这让我failed to save gif Optional(Error Domain=NSCocoaErrorDomain Code=-1 "(null)") ,这似乎是由于.gif文件格式,但我找不到另一个如何保存到相机的例子滚动,而不使用已弃用的ALAssetsLibrary.writeImageDataToSavedPhotosAlbum

我尝试从Safari中保存一个GIF,这工作:发送给其他人的GIFanimation,所以我知道我想要做什么是可能的,但有人可以指向我的PHPhotoLibrary API的正确部分?

编辑:基于这个答案类似的问题,我想出了如何做我想要的DataPHAssetCreationRequest如下:

 class func saveToCameraRoll(imageUrl: String) { ImageService.GetImageData(url: imageUrl) { data in // This helper function just fetches Data from the url using Alamofire guard let data = data else { return } PHPhotoLibrary.shared().performChanges({ _ in PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data, options: nil) }) { success, error in guard success else { log.debug("failed to save gif \(error)") return } log.debug("successfully saved gif") } } }