微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从一张专辑到另一张专辑的PHAsset复制

如何解决从一张专辑到另一张专辑的PHAsset复制

我想将资产从一个相册复制到另一相册,而不需要imageData或videoData,也就是说,只需将资产从一个相册复制到另一相册

我做什么

let asset = PHAsset.fetchAssets(withLocalIdentifiers: [assetLocalIdentifier],options: .none).firstObject
PHPhotoLibrary.shared().performChanges({
    guard let albumChangeRequest = PHAssetCollectionChangeRequest(for: album) else { return }
    albumChangeRequest?.addAssets([asset] as NSFastEnumeration)
})

相册是我的自定义相册

即时通讯崩溃

*** Terminating app due to uncaught exception 'NSinvalidargumentexception',reason: '-[__NSCFString objectID]: unrecognized selector sent to instance 0x600002339340'
如果我将视频保存到文件并使用creationRequestForAssetFromVideo ...,则

ofc资产存在,相册也存在,并且一切正常。

通过creationRequestForAssetFromVideo进行保存没有问题,但是为此,我需要先保存该视频,并且我想复制用户选择的内容而不必等待视频被保存,甚至可以吗?

解决方法

好吃的东西找到方法

视频

PHImageManager.default().requestAVAsset(forVideo: asset,options: PHVideoRequestOptions()) { (avAsset,_,_) in
    if let assetURL = avAsset as? AVURLAsset {
         _url = assetURL.url
....

图片

asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions()) { (contentEditingInput,_) in
    if let url = contentEditingInput?.fullSizeImageURL {
         _url = url
....

现在是图片

PHAssetChangeRequest.creationRequestForAssetFromImage

或视频

PHAssetChangeRequest.creationRequestForAssetFromVideo

说明: 我们无法直接复制资产,但可以从系统中资产所在的位置获取路径并将其复制到相册中

快乐编码;)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。