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

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

解決済

1回答

539閲覧

TextFieldの計算

hik_

総合スコア42

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/09 07:07

編集2019/01/12 14:12

前提・実現したいこと

一つの画面にTextFieldを2つ置いて(textField1とtextField2)textField1からtextField2の値を引いた数をlabelに表示したいです。

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

textFieldを知るために色々試して、textField1とtextField2に入力された数が同じならlabelに同じと表示する、異なっていれば違うと表示するというコードはできたのですが、textField同士を計算する事が実装出来ていません。型変換が必要な事が現段階で分かっている事です。

該当のソースコード

import UIKit class ViewController: UIViewController { @IBOutlet weak var textField1: UITextField! @IBOutlet weak var textField2: UITextField! @IBOutlet weak var keisanLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // textField1&textField2の入力方法をナンバーパットに設定 textField1.keyboardType = UIKeyboardType.numberPad textField2.keyboardType = UIKeyboardType.numberPad } @IBAction func keisanButton(_ sender: Any) { // textField1と2に入力された文字が同じの場合は同じと表示、違う場合は違うと表示 if textField1.text == textField2.text { keisanLabel.text = "同じ" } else { keisanLabel.text = "違う" } } }

TextField同士で計算するために書いたコード

var result = Int(textField1.text!) - Int(textField2.text!) // エラー Expression type '@lvalue String?' is ambiguous without more context

追記 以下のコードで実装が出来、解決しました。

let ititext = Int(textField1.text!) let nitext = Int(textField2.text!) let kei = ititext! - nitext! keisanLabel.text = String(kei)

試したこと

型変換を勉強したり、色々コードを調べているのですが現段階では実装出来ていません。
ご教示頂けると幸いです。

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

Swift4 Xcode10

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

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

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

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

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

fuzzball

2019/01/09 07:13

途中でもいいのでコードを書いて、どのような問題が発生しているのか具体的に書いて下さい。
hik_

2019/01/09 07:24

情報が不足しており、すみません。足りない情報があれば迅速に追加させて頂きます。 var result = Int(textField1.text!) - Int(textField2.text!) // エラー Expression type '@lvalue String?' is ambiguous without more context 型変換をしなくては計算出来ないと思い、このコードを書いたのですがエラーが起きています。 エラーを調べていて、型が定義されていないというエラーと分かったので型変換が間違っているのかと、現在型変換を調べています。 宜しくお願いします。
fuzzball

2019/01/09 07:32

コードは質問内に追記して下さい。
guest

回答1

0

ベストアンサー

型変換が問題なのではなく、オプショナル型の理解が出来ていないことが問題です。
オプショナル型の勉強をして下さい。

投稿2019/01/09 07:37

fuzzball

総合スコア16731

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

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

hik_

2019/01/09 11:52

ご回答ありがとうございます。 オプショナル型を勉強してから、再度取り組みたいと思います。また以後コードの追記は質問内で行います。 ありがとうございました。
hik_

2019/01/09 14:27

オプショナル型を基礎から勉強したところ、実装出来ました。ありがとうございます。 実装出来たコードを記載する場合は、返信の所で良いのでしょか?それとも質問内の方が良いのでしょうか?
fuzzball

2019/01/10 00:15

>>また以後コードの追記は質問内で行います。 以後ではなく今からやって下さい。
hik_

2019/01/12 14:13

質問内に情報を追加しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問