图像?不能转换为 UIImage:Xcode 在尝试使用原始图像时抛出错误

Posted

技术标签:

【中文标题】图像?不能转换为 UIImage:Xcode 在尝试使用原始图像时抛出错误【英文标题】:UImage? isn't convertible to UIImage: Xcode throws error when trying to use original image 【发布时间】:2018-11-04 04:39:17 【问题描述】:
 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
    // The info dictionary may contain multiple representations of the image. You want to use the original.
    guard let selectedImage = info[.originalImage] as?
        UIImage else 
        fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
    

    // Set photoImageView to display the selected image.
    photoImageView.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)

我正在尝试构建一个允许您从库中选择图像的 ios 应用程序,但它一直失败并出现错误“UIImage?不可转换为 UIImage。有没有办法修复此错误或绕过它作为现在?我在 MacOS 10.14 上运行 Xcode 10.1。

【问题讨论】:

首先使用正确的方法签名:func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) 在您的警戒声明中,我认为您不需要 ?在 as 之后。 【参考方案1】:

.originalImage 替换为UIImagePickerControllerOriginalImage

这对我有用。

Xcode 版本:10.1

Swift 版本:4.0

【讨论】:

【参考方案2】:

info[.originalImage] 是 Any?价值。 Si 它就像它可以包含一个 UIImage?值或零。所以,试试吧:

guard guard let selectedImage = info[.originalImage] as? UIImage?  else  ... 

将该问号添加到 UIImage。就是这样。

【讨论】:

正如@rmaddy 上面已经评论的,委托方法的签名是错误的。 info 参数必须是 '[UIImagePickerController.InfoKey : Any]' 类型,参见developer.apple.com/documentation/uikit/…

以上是关于图像?不能转换为 UIImage:Xcode 在尝试使用原始图像时抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

从 Xcode 中文本的 UIImage 获取可编辑文本

访问 nsmutablearray xcode 中的图像

如何将图像转换为 UIImage

从 cvMat 转换为 UIImage 会改变图像

Iphone 将 IplImage 转换为 UIImage 图像变蓝

将 UIImage 转换为灰度保持图像质量