下面是我的结构:
struct EditableCircleImage: View {
@State private var image: Image?
@State private var inputImage: UIImage?
@State private var animatedImage: AnimatedImage?
var body: some View {
ZStack {
...
}
}
func loadImage() {
guard let img = inputImage else {
return
}
animatedImage = AnimatedImage(data: img.jpegData(compressionQuality: .infinity))
}
}
我在LoAdImage()
中的AnimatedImage
赋值出现以下错误:
Value of optional type 'Data?' must be unwrapped to a value of type 'Data'
即使img
被保证不是null
,因为它是从guard let
创建的。
我还测试了if let inputImage=inputImage
,它给出了相同的错误。
知道为什么吗?
如jpegData文档中所述(CompressionQuality:)
申报
func jpegData(compressionQuality: CGFloat) -> Data?
返回值
包含JPEG数据的数据对象,如果生成数据时出现问题,则为nil。 如果图像没有数据,或者基础CGImageRef包含不支持的位图格式的数据,则此函数可能返回nil。
所以基本上不是img
对象导致了这个错误。 但它是UImage
的jpegdata
属性的返回值。
您可以使用Guard let
或If let
从JPEGData
属性获取显式值。