照片和视频未保存在我的自定义相册中

Posted

技术标签:

【中文标题】照片和视频未保存在我的自定义相册中【英文标题】:Photos and Videos are not saving in my Custom Photo Album 【发布时间】:2017-12-20 22:08:05 【问题描述】:

照片和视频未保存在我的自定义相册 (TestAlbum) 中。相反,它保存在相机胶卷中。您能帮我找出问题并帮助我更正代码吗?

phphotoLibrary.shared().performChanges(
    let albumName = "TestAlbum"
    let assetCollection: PHAssetCollection!
    let fetchOptions = PHFetchOptions()
    PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: albumName)

    fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)

    let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)

    if let _: AnyObject = collection.firstObject 
        collection.firstObject
    

    let options = PHAssetResourceCreationOptions()
    options.shouldMoveFile = true

    let creationRequest = PHAssetCreationRequest.forAsset()

    creationRequest.addResource(with: .video, fileURL: outputFileURL, options: options)
, completionHandler:  success, error in
    if !success 
        print("Could not save movie to photo library: \(String(describing: error))")
    
    cleanUp()
)

【问题讨论】:

执行performChanges() 只运行creationRequestForAssetCollection(withTitle:)。在完成处理程序中,执行另一个 performChanges() 以实际将您的资产添加到集合中。编辑:我不知道它是否真的很重要,但我使用creationRequest.addAsset() 而不是creationRequest.addResource()。好久没用 Objective-C 写这段代码了 感谢您的更新,但它没有解决问题。 @AlejandroIván 嗨,谢谢你的好建议但我想将.shouldMoveFile 设置为true 那么我该如何处理creationRequestForAssetCollection?无法为addAssets 放置选项参数 【参考方案1】:

与上面的 cmets 一样,我会将相册的创建和照片/视频的保存分为两个 performChanges 块。但是我在您的代码中没有看到您实际上将资产(照片/视频)添加到您的资产集合(相册)中。为此,请执行以下操作

let assetPlaceholder = creationRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for:collection)
if let changeRequest = albumChangeRequest, let placeholder = assetPlaceholder 
    changeRequest.addAssets(NSArray(array:[placeholder]))

【讨论】:

以上是关于照片和视频未保存在我的自定义相册中的主要内容,如果未能解决你的问题,请参考以下文章

将视频保存到自定义相册 iOS

仅限自定义相册的 PHFetchResult

Swift:将照片添加到自定义相册

快速视频中的照片上的自定义动画

iOS开发中自定义相册功能性能改善

在 iOS 应用中保存和显示视频。