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

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

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

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

Swift

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

Q&A

解決済

2回答

2068閲覧

fatal error(Swift)が出てしまいます

kackey621

総合スコア18

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/04/07 06:34

編集2017/04/07 07:31

このコードのビルドをしましたがエラーが出ました。
エラーは、
fatal error: unexpectedly found nil while unwrapping an Optional value
でした。
エラーが出ている位置は、

Swift

1// 基準日時の設定 3分を日付型に変換 2let dt:Date = df.date(from: lbTimer.text!)! 3

全文コードは下記の通りです。

Swift

1@IBAction func countDown(_ sender: UIButton) { 2 3 // 背景色 4 self.view.backgroundColor = UIColor.yellow 5 6 // タイマー生成、開始 1秒後の実行 7 let tmr: Timer! = Timer.scheduledTimer( 8 timeInterval: 1.0, // 時間間隔 9 target: self, // タイマーの実際の処理の場所 10 selector: #selector(TimerViewController.tickTimer(_:)), // メソッド タイマーの実際の処理 11 userInfo: nil, 12 repeats: true) // 繰り返し 13 tmr.fire() 14 } 15 16 // タイマー処理 17 func tickTimer(_ timer: Timer) { 18 19 //NSLog(@"タイマー表示"); 20 21 // 時間書式の設定 22 let df:DateFormatter = DateFormatter() 23 df.dateFormat = "mm:ss" 24 25 // 基準日時の設定 3分を日付型に変換 26 let dt:Date = df.date(from: lbTimer.text!)! 27 28 // カウントダウン 29 let dt02 = Date(timeInterval: -1.0, since: dt) 30 31 self.lbTimer.text = df.string(from: dt02) 32 33 // 終了判定 3分が00:00になったら isEqualToString:文字の比較 34 if self.lbTimer.text == "00:00" { 35 36 // バックアップ背景色の変更 37 self.view.backgroundColor = UIColor.red 38 39 // タイマー停止 40 timer.invalidate() 41 42 // カスタマイズ編:ダイアログを作成 43 let alertController = UIAlertController(title: "終了", message: "タイマー終了時間です", preferredStyle: .alert) 44 // ダイアログに表示させるOKボタンを作成 45 let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil) 46 // アクションを追加 47 alertController.addAction(defaultAction) 48 // ダイアログの表示 49 present(alertController, animated: true, completion: nil) 50 51 } 52 } 53

使用しているSwiftは3です。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

lbTimer.textが、

  1. nil
  2. フォーマット(mm:ss)に即していない。(1234など。カラ文字列を含む)
  3. フォーマットには即しているが範囲外。(60:60など)

【追記】

swift

1self.lbTimer.text = df.string(from: dt02)

ここでlbTimer.textに代入しているのですから、ここより下に書かないといけません。

投稿2017/04/07 07:35

編集2017/04/07 07:43
fuzzball

総合スコア16731

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

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

kackey621

2017/04/07 07:38

nilだとすると、どこの処理がダメなのでしょうか?
fuzzball

2017/04/07 07:43

回答に追記しました。
guest

0

ヒント
lbTimer.textnilなのに強制アンラップしてるからだと思いますよ。確認してみてください。

投稿2017/04/07 07:23

xenbeat

総合スコア4258

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問