滴·学生卡 2025-03-27 16:24 采纳率: 100%
浏览 4
已结题

iOS循环添加图片到相册

为什么循环添加图片到相册,添加的都是同一张图片

var assetIDs: [String] = []
        PHPhotoLibrary.shared().performChanges({
            images.forEach { image in
                let request = PHAssetCreationRequest.creationRequestForAsset(from: image)
                assetIDs.append(request.placeholderForCreatedAsset!.localIdentifier)
            }
        }) { success, error in
            guard success else { return }
            
            let assets = PHAsset.fetchAssets(withLocalIdentifiers: assetIDs, options: nil)
            PHPhotoLibrary.shared().performChanges({
                let request = PHAssetCollectionChangeRequest()
                request.addAssets(assets)
            })
        }

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-27 16:24
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    iOS循环添加图片到相册

    你遇到了一个问题:循环添加图片到相册,但是添加的都是同一张图片。这个问题是因为你使用了同一个 PHAssetChangeRequest 对象来添加多张图片,这导致了最后添加的图片覆盖了之前添加的图片。

    解决方法是使用一个循环来创建多个 PHAssetChangeRequest 对象,并在每个请求中添加一张图片。下面是一个示例代码:

    var assetIDs: [String] = []
    let image = UIImage(named: "image")!
    
    for i in 0..<5 { // 添加5张图片
        let request = PHAssetChangeRequest.creationRequestForAsset(from: image)
        PHPhotoLibrary.shared().performChanges({ changes in
            if let asset = changes.insertedAssets.first as? PHAsset {
                assetIDs.append(asset.localIdentifier)
            }
        })
    }
    

    在上面的代码中,我们使用了一个循环来创建5个 PHAssetChangeRequest 对象,每个请求中添加一张图片。然后,我们使用 performChanges 方法来执行这些请求,并将添加的图片的localIdentifier添加到 assetIDs 数组中。

    这样,每次循环中添加的图片都会被正确地添加到相册中,而不是覆盖之前添加的图片。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日