質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

1833閲覧

switch文のなかで、戻り値を返す方法。

acid

総合スコア20

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2017/07/17 21:08

###前提・実現したいこと
メソッド内で、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

理由:
メソッドは UIImage型を返す必要があるのにもかかわらず、Defaultで戻り値がない
ケースが存在するため。

対処:
1.OptionalでUIImage型の変数用いてnilを返却する
2.throw Error句を用いて例外処理をする
3.Defaultとなる場合のUIImage型を別途定義し返却する

投稿2017/07/17 21:55

kanimaru

総合スコア1013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問