我是 Swift 的初学者。
目前,我正在使用 AVFoundation 创建相机应用程序。
我正在从处理 A 编码到处理 B。
但是,显示以下错误。
错误:
Missing return in a function expected to return 'UIImage'.
我不知道如何在 switch
语句中使用 return。
//Processing A
func captureImage(_ sampleBuffer: CMSampleBuffer) -> UIImage {
.....
switch self.input.device.position {
case .front:
let resultImage = UIImage(cgImage: imageRef, scale: 1.0, orientation: UIImageOrientation.down)
return resultImage
case .back:
let resultImage = UIImage(cgImage: imageRef, scale: 1.0, orientation: UIImageOrientation.up)
return resultImage
default:
print("error")
}
}
最佳答案
当您的代码并非所有路径都返回值时,就会发生此错误。如果您说您的方法返回一个 UIImage
,它必须始终如此。
让我们仔细看看captureImage
的实现:
func captureImage(_ sampleBuffer: CMSampleBuffer) -> UIImage {
.....
switch self.input.device.position {
case .front:
let resultImage = UIImage(cgImage: imageRef, scale: 1.0, orientation: UIImageOrientation.down)
return resultImage
case .back:
let resultImage = UIImage(cgImage: imageRef, scale: 1.0, orientation: UIImageOrientation.up)
return resultImage
default:
print("error")
}
}
我们可以看到,如果input.device.position
为.front
或.back
,则该方法返回一个值。但是,如果 input.device.position
不是这两个值怎么办?该方法将只打印“错误”并且不返回任何内容。这是 Not Acceptable ,是吗?
您可能会说,“我敢肯定 input.device.position
在这种情况下只能是前面或后面。不能是其他任何东西!”好吧,编译器对此不确定。它只是看到 input.device.position
有其他可能的值。
在这种情况下,我建议您在这两个值都不是时才执行 fatalError()
。它只会让你的应用程序崩溃。如果您这样做,则该方法不需要返回任何内容。应用程序毕竟崩溃了。
关于ios - 预期返回 'UIImage' 的函数中缺少返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156231/