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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

解決済

1回答

519閲覧

Swift : Double型のデータをDateComponentsFormatter()で出力したい

masa328

総合スコア51

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

0クリップ

投稿2021/12/02 13:26

SwiftUI(Swift)で初心者プログラミングをしています。

Double型に入っている変数(秒数)を hh:mm:ss フォrーマットで出力したく、Webを参照した以下のコードを書いたのですがエラーが出てしまします。

let formatter = DateComponentsFormatter() formatter.unitsStyle = .positional formatter.allowedUnits = [.hour, .minute, .second] message = String(formatter.string(from: lapTime))//-------Error!

lapTimeはDouble型です。

4行目でエラーが発生し、
Value of optional type 'String?' must be unwrapped to a value of type 'String'
と出てしまいます。

解決策をお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらく message という変数が String 型で宣言されているのだと思いますが、 formatter.string(from: lapTime) で得られる文字列は、 String? 型(Stringのオプショナル型)なので、それをそのまま message に入れようとしてエラーになったのだと思います。 messagesString? 型で宣言するか、または formatter.string(from: lapTime) の変換結果がnilか否か(変換できたか否か)判断して、nilでなかった時にそれをString型にアンラップして message に格納するような処理にする必要があると思います。(lapTimeに時分秒に変換できないようなあり得ない値が入る可能性がないなら、 formatter.string(from: lapTime)! のようにして ! をつけて単純にアンラップするだけでもよいと思います。)

投稿2021/12/03 06:43

TakeOne

総合スコア6299

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

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

masa328

2021/12/03 13:11

ありがとうございます。lapTimeはnil等入りませんので(多分)、!マークをつけて解決しました。 とはいえ、今後勉強して、nilか否かを判断するやり方も進めていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問