ios - 预期返回 'UIImage' 的函数中缺少返回值

标签 ios swift switch-statement

我是 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")
    }
}

enter image description here

最佳答案

当您的代码并非所有路径都返回值时,就会发生此错误。如果您说您的方法返回一个 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/

相关文章:

ios - OpenCV + OpenGL : proper camera pose using solvePnP

ios - 数据从 UITextField 传递到 HTML,在 iOS 中反之亦然

javascript - HammerJS (v2) 滑动和平移禁用在 iOS 中触发的链接

ios - 如何在 Swift 中从 Core Data 中删除多个不同的数据?

javascript - Jquery 选择选项不适用于 switch 和 case

ios - 带有根据用户输入更改标签的按钮的 TableView

ios - 单一选择在 UITableview 中不起作用

swift - 扩展等式元组数组以找到第一个匹配的元组

java - 如何初始化 "hasil"以便我可以在 switch 函数中使用它?

java - 根据传入方法的参数之一创建包含 switch 语句的方法