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

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

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

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

Xcode

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

Swift

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

Q&A

解決済

2回答

1126閲覧

iOSマクロ要素計算アプリ(Swift)予想外のnillが検出されて落ちてしまいます

Hisato

総合スコア18

iOS

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

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/01/08 10:41

予想外のnillが検出されてアプリが途中で落ちてしまいます。

プログラミング初心者です。
iOSアプリを作ってみようと思い、見よう見まねで挑戦してみましたが、nillのエラーを解決できないでいます。
かなりの知識不足と、わかりづらいところがあると思いますが、回答お願いします!

## 作りたいもの
太りたい(バルクアップ)ので、目標体重に達するには、1日にどれくらい食べればいいかを計算するアプリを作ろうとしています。
必要項目を入力し、その値から式に代入し、計算して結果を表示するだけです。

発生している問題・エラーメッセージ

アプリを起動し、必要項目を入力し、最後に実行ボタンを押すところでアプリが落ちてしまいます。
イメージ説明

該当のソースコード

言語はSwiftを使用しています。
まず必要な関数とボタン、ラベルなどを書きました。

イメージ説明
実行ボタン(calculation)処理の中でエラーが出ます。
実際に、実行ボタンを押すと、アプリが落ちてしまいます。
本来なら、実行ボタンの下のラベル(rp、rf、rc)に、マクロ要素のプロテイン(P)、ファット(F)、脂質(C)の数字が表示されるようにしたいです。
イメージ説明

試したこと

このスクリーンショットの中では書いていませんが、bmi関数にアプリが起動したところで0を代入してみましたがダメでした。
nillについてググり、アンラップなどを調べましたが、いまいち理解できず、またどこが原因なのかも分からずにいます。。

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

バージョン

Swift: 4.2.1
Xcode: 10.1

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

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

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

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

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

guest

回答2

0

Double(string)の戻りはoptionalです。
stringがdoubleに変換できない不正な文字が含まれた場合nilになります。

単にDoubleで変換して処理を進めるのではなく、
変換した結果nilになったら先に進まないように処理をすべきです。

投稿2019/01/08 10:57

t_obara

総合スコア5488

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

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

Hisato

2019/01/09 04:53

回答ありがとうございます。 今回は、実行ボタンの処理の中にテキストフィールドの値を要素に入れる処理を入れていないことに気づき、解決しましたが、nilの対策についてもっと勉強する必要があるとわかりました。 ありがとうございます!
guest

0

ベストアンサー

単純にどこかに値が入ってないということですね。
計算式で、エラーが出るので、その要素に問題がありそうです。

print()で出力して、どの要素(w, h, a)に問題があるのかを探ってみるのはどうですか?

投稿2019/01/08 10:45

hameji001

総合スコア639

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

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

Hisato

2019/01/09 04:51

回答ありがとうございます! 確認したところ実行ボタンを押した時の処理にテキストフィールドの値を要素に入れる処理が入っていませんでした! 解決しました。本当にありがとうございます!!
hameji001

2019/01/09 05:51

解決して何よりです。 デバッグの方法も覚えて、1歩step upですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問