首页 > 解决方案 > 无法从 phpickerviewcontroller 保存选定的图像

问题描述

这是我的代码

func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    picker.dismiss(animated: true, completion: nil)
    let imgName : String = UUID.init().uuidString
    
    guard let itemProvider = results.first?.itemProvider else { return }
    if itemProvider.canLoadObject(ofClass: UIImage.self) {
        for result in results {
            result.itemProvider.loadObject(ofClass: UIImage.self, completionHandler: { (image, error) in
                
                if let newImage = image as? UIImage {
                    DispatchQueue.main.async { [self] in
                        let newImgInfo = MediaHandler.saveImg(albumName: albumName, imgUrl: imgName)
                        self.imageArray.append(newImage)
                        print(self.imageArray.count)
                        self.imageDataArray.append(newImgInfo)
                        DataHandler.saveImgData(imageName: imgName, image: newImage)
                        self.collectionView.reloadData()
                       }
                   }
                else {
                    print("wrong")
                }
            })
        }
    }
    self.collectionView.reloadData()
}

如果我一次选择一张图像添加到集合视图中,它工作正常,我可以离开视图并返回,一切都很好, 在此处输入图像描述 但是如果我选择了多个图像,当我离开视图并返回它只是显示同一图像的多个副本。

在此处输入图像描述

关于为什么的任何线索将不胜感激。我可能会说,如果我使用 UIImagePicker 一切正常。我只是想允许使用图像选择器进行多项选择。

标签: iosswiftxcode

解决方案


在我看来,您没有在循环中提供新的 imgName 。需要生成唯一的资产 ID。我只是想在这里迈出第一步并取回图像。


推荐阅读