Фотографии и видео не сохраняются в моем пользовательском фотоальбоме

Фотографии и видео не сохраняются в моем пользовательском фотоальбоме (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()
})

person Subs Dba    schedule 20.12.2017    source источник
comment
Выполните performChanges(), чтобы запустить только creationRequestForAssetCollection(withTitle:). В обработчике завершения выполните еще одно действие performChanges(), чтобы фактически добавить ваш ресурс в коллекцию. РЕДАКТИРОВАТЬ: я не знаю, действительно ли это важно, но я использую creationRequest.addAsset() вместо creationRequest.addResource(). Прошло много времени с тех пор, как я написал этот код на Objective-C.   -  person Alejandro Iván    schedule 21.12.2017
comment
Спасибо за ваше обновление, но оно не решило проблему.   -  person Subs Dba    schedule 21.12.2017


Ответы (1)


Как и в комментариях выше, я бы разделил создание фотоальбома и сохранение вашего фото/видео на два блока PerformChanges. Но я все равно не вижу в вашем коде, где вы на самом деле добавляете актив (фото/видео) в свою коллекцию активов (фотоальбом). Для этого сделайте следующее

let assetPlaceholder = creationRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for:collection)
if let changeRequest = albumChangeRequest, let placeholder = assetPlaceholder {
    changeRequest.addAssets(NSArray(array:[placeholder]))
}
person adamfowlerphoto    schedule 11.01.2018