SwiftUI开发出现UIImage.Type转UIImage类型错误如何解决
报错原因
你遇到的报错本质是当前代码作用域内的UIImage指向的不是UIKit框架下的UIImage实例类型,而是其他同名类型:
- 大概率是你的项目中自定义了命名为
UIImage的类、结构体、枚举,和系统UIKit的UIImage重名冲突 - 小概率是你在当前代码文件或上级作用域定义了命名为
UIImage的变量/常量,覆盖了系统类型的指向
解决方案
按优先级尝试以下操作即可解决:
- 全局搜索项目内的
struct UIImage、class UIImage、enum UIImage定义,如果存在自定义的重名类型,优先修改自定义类型的名称,避免和系统类型冲突 - 如果不需要修改自定义类型名称,或者没有找到自定义重名类型,直接在用到系统UIImage的地方显式指定
UIKit命名空间,确保调用的是系统类型,修改imagePickerController方法的代码如下:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) { // 显式指定用UIKit的UIImage做类型转换,避免重名冲突 guard let uiImage = info[.editedImage] as? UIKit.UIImage else { parent.showImagePicker = false return } parent.pickedImage = Image(uiImage: uiImage) if let mediaData = uiImage.jpegData(compressionQuality: 0.5){ parent.ImageData = mediaData } parent.showImagePicker = false }
补充说明:这里把强制解包as!换成了可选绑定guard let,避免选到非图片资源时出现崩溃问题
内容的提问来源于stack exchange,提问作者sultan.h
相关产品推荐
相关产品推荐

