ios - 无法从 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 一切正常。我只是想允许使用图像选择器进行多项选择。
解决方案
在我看来,您没有在循环中提供新的 imgName 。需要生成唯一的资产 ID。我只是想在这里迈出第一步并取回图像。
推荐阅读
- html - Reactjs 中的道具简写
- iphone - 使用 Iphone 时打开白色网站的 Instagram 生物链接
- python - 图尺寸 1440x720 0 轴 - 如何绘制更大的图
- python - 正则表达式将一个选择保留在方括号中
- javascript - 以后如何对存储在 useState 中的对象使用方法?
- angular - 安装不同的 npm 包后,Angular Material Elements 在特定组件中停止工作
- makefile - CMake 构建 .sln 文件
- firebase - 如何测试 Firebase App Check 和 reCaptcha v3
- java - 新线程上的通量间隔滴答声
- serilog - 如何更改 Serilog 中特定日志事件的 LogLevel?