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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

620閲覧

Swift5でのエラー処理につきまして

ryotask600

総合スコア2

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2020/05/07 08:14

前提・実現したいこと

TextLabelの入力項目にIntを入れると正常動作するのですが、空欄や文字列を入力するとエラーによりクラッシュします。
Segueにて別のViewControllerに値を渡す前にエラー処理をしたいです。
質問内容として;
①エラー処理における考え方をご教授頂けましたら幸いです。
②コードの実装方法の方向性につきまして、ご教授頂けましたら幸いです。

※現在行っている事
simulationStartTappedがボタンとなり、ボタンを押す際に
入力項目にInt以外が入ると何もしない処理にしておりますが、
個人的にあまりしっくりこず、ベストプラクティスをご教授頂けましたら幸いです。

該当のソースコード

Swift5

1import UIKit 2 3class AutoInputDataViewController: UIViewController { 4 5 //入力項目のLabel群 6 @IBOutlet weak var atariiKakuritsuLabel: UITextField! 7 @IBOutlet weak var kakuhenTotsunyuRitsuLabel: UITextField! 8 @IBOutlet weak var kakuhenKeizokuRitsuLabel: UITextField! 9 @IBOutlet weak var soukaitensuLabel: UITextField! 10 @IBOutlet weak var senenKaitensuLabel: UITextField! 11 @IBOutlet weak var atariDedamaLabel: UITextField! 12 @IBOutlet weak var simulationDayLabel: UITextField! 13 14 //エラーが出た時に出るLabel 15 @IBOutlet weak var autoInputErrorLabel: UILabel! 16 17 //ViewDidLoad 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 } 21 22 //PrepareでResultAutoViewControllerに渡す 23 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 24 if (segue.identifier == "goToAutoResult") { 25 //大当たり確率 26 let atariKakuritsuNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 27 atariKakuritsuNyuryoku.atariKakuritsu = Int(atariiKakuritsuLabel.text!)! 28 //確変突入率 29 let kakuhenTotsunyuritsuNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 30 kakuhenTotsunyuritsuNyuryoku.kakuhenTotsunyuritsu = Int(kakuhenTotsunyuRitsuLabel.text!)! 31 //確変継続率 32 let kakuhenKeizokuritsuNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 33 kakuhenKeizokuritsuNyuryoku.kakuhenKeizokuritsu = Int(kakuhenKeizokuRitsuLabel.text!)! 34 //総回転数 35 let kaitensuuSumNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 36 kaitensuuSumNyuryoku.kaitensuuSum = Int(soukaitensuLabel.text!)! 37 //1000円辺りの回転数 38 let senenKaitensuuNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 39 senenKaitensuuNyuryoku.senenKaitensuu = Int(senenKaitensuLabel.text!)! 40 41 //大当たり一回辺りの出玉数 42 let atariDedamaNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 43 atariDedamaNyuryoku.ikaiOatariDedama = Int(atariDedamaLabel.text!)! 44 //日数 45 let simulationDayNyuryoku: ResultAutoViewController = (segue.destination as! ResultAutoViewController) 46 simulationDayNyuryoku.simulationDay = Int(simulationDayLabel.text!)! 47 48 } 49 } 50 51 52 //autoInputErrorLabel.text = "各項目の数値を半角で入力してください" 53 54 @IBAction func simulationStartTapped(_ sender: Any) { 55 if atariiKakuritsuLabel.text! && 56 kakuhenTotsunyuRitsuLabel.text && 57 kakuhenKeizokuRitsuLabel.text && 58 soukaitensuLabel.text && 59 senenKaitensuLabel.text && 60 atariDedamaLabel.text && 61 simulationDayLabel.text == Int(1...9999){ 62 performSegue(withIdentifier: "goToAutoResult", sender: nil) 63 }else{ 64 } 65 } 66 67}

試したこと

try, catchをやろうとしたが、そもそもどのようにすれば良いか分からず。。。

補足情報(FW/ツールのバージョンなど)

Xcode11
Swift5

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

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

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

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

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

guest

回答2

0

ベストアンサー

Swift

1//atariKakuritsuNyuryoku.atariKakuritsu = Int(atariiKakuritsuLabel.text!)! 2//例えば上を下のようにしてはどうでしょうか。 3//空文字のだけの対応ですが。 4atariKakuritsuNyuryoku.atariKakuritsu = atariiKakuritsuLabel.text == "" ? 0 : Int(atariiKakuritsuLabel.text!)!

投稿2020/05/07 09:12

freemann

総合スコア264

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

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

ryotask600

2020/05/11 04:06

遅くなりまして、ようやく出来ました!!本当にありがとうございます!!
guest

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問