###前提・実現したいこと
メソッド内で、switch文の戻り値を返したい。
###発生している問題・エラーメッセージ
Missing return in a function expected to return 'UIImage'
###該当のソースコード
現在、AVFoundationを使用してカメラアプリを作成しています。
下記のコーディングのように処理Aで戻り値を返して、処理Bを行うコーディングしています。
問題なく動作しています。
import UIKit import AVFoundation class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate,UINavigationControllerDelegate { ... //処理A //カメラのキャプチャー処理 func captureImage(_ sampleBuffer: CMSampleBuffer) -> UIImage { //キャプチャ設定を記述 ... let resultImage = UIImage(cgImage: imageRef, scale: 1.0, orientation: UIImageOrientation.down) return resultImage }
//処理B //カメラでキャプチャしたものをoutputする処理 func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) { let image: UIImage = self.captureImage(sampleBuffer) //以下省略 }
###試したこと
次に、処理AでSwitch文を書いて条件分岐をしたいと思いました。
下記の様なコーディングをしました。
//処理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") } } //処理Bは加筆なし。 func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) { let image: UIImage = self.captureImage(sampleBuffer) //以下省略 }
上記のコーディングですと、処理Aのswitch文でエラーが表示されます。
エラー内容:
Missing return in a function expected to return 'UIImage'
エラーの画像:
swiftを独学で学んでいるため、文法的に分からない点が多々あり申し訳ありません。
原因は、戻り値の記述が正しくできていないことと感じます。
参考書やネットの情報で調べても解決できなかったため、質問させていただきます。
メソッド内でswitch文の戻り値を返す場合どのようなコーディングをすべきでしょうか。
また、一般的にswitch文内で、戻り値を記述することは適切ではないのでしょうか。
お手数をお掛けいたしますが、宜しくおねがいいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
swift3
xcode8.3.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。