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

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

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

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

Swift

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

Q&A

解決済

1回答

1877閲覧

Value of optional type 'Int?' must be unwrapped to a value of type 'Int'というエラー

misokota

総合スコア36

Xcode

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

Swift

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

0グッド

0クリップ

投稿2021/09/26 11:16

import UIKit class ViewController: UIViewController { @IBOutlet var input: UITextField! @IBOutlet var output: UILabel! var random = Int(arc4random_uniform(101)) var count = 0 @IBAction func submit(sender: AnyObject) { let answer = Int(input.text!) count += 1 if answer < 0 || answer > 100 { output.text = "入力は0〜100にしてください" } else if answer < random { output.text = "もっと高かった" } else if answer > random { output.text = "もっと低かった.." } else { output.text = "正解!!! (count) 回目で当たった!" } } override func viewDidLoad() { super.viewDidLoad() print(random) // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

Xcode初心者です↓のコードに「Value of optional type 'Int?' must be unwrapped to a value of type 'Int'
Coalesce using '??' to provide a default when the optional value contains 'nil'
Force-unwrap using '!' to abort execution if the optional value contains 'nil'」というエラーが出てしまいます。解決方法を教えて欲しいです。
if answer < 0 || answer > 100 {
output.text = "入力は0〜100にしてください"
} else if answer < random {
output.text = "もっと高かった"
} else if answer > random {
output.text = "もっと低かった.."

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/29 16:35

回答に反応がありませんがどうかされましたか?質問の意図と異なる回答である場合はコメントでその旨お伝え頂き質問文に意図を加筆頂けると助かります。
guest

回答1

0

ベストアンサー

この部分で、テキストフィールドのテキストを Int() で整数へ変換していますが、

swift

1let answer = Int(input.text!)

数字以外のテキストが渡される可能性もあり、その場合は変換に失敗して nil を返すので、返り値の型が Int 型のオプショナルになっています。アンラップして取り出さないと整数として使えません。

if let ... を使う場合:

swift

1if let answer = Int(input.text!) { 2 count += 1 3 4 if answer < 0 || answer > 100 { 5 output.text = "入力は0〜100にしてください" 6 } else if answer < random { 7 output.text = "もっと高かった" 8 } else if answer > random { 9 output.text = "もっと低かった.." 10 } else { 11 output.text = "正解!!! (count) 回目で当たった!" 12 } 13} else { 14 print("テキストフィールドの文字列を整数に変換できなかった") 15}

投稿2021/09/26 12:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問