今年の1月からSwiftを勉強し始め、日々大苦戦中です。 ぶつかった問題やその解決方法なんかをちょっとずつ書いていけば自分の備忘録がわりになるし、誰かの役にも経つかなと考えたのでこれから気が向いたらプログラミング関係の記事も書いてみます。
2つのUITextFieldに入力された数字を掛け算した結果をUIButtonが押された時にUILabelに表示しようとし、このようにコードを書き進めていました。
import UIKit class ViewController: UIViewController { @IBOutlet weak var text1: UITextField! @IBOutlet weak var text2: UITextField! @IBOutlet weak var result1: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func calculation(_ sender: Any) { // 小数を扱えるようにUITextFieldをDouble型に変換 let x1: Double = Double(text1.text!) as! Double let x2: Double = Double(text2.text!) as! Double let y = x1 * x2 result1.text = String(y) } }
すると
let x1: Double = Double(text1.text!) as! Double let x2: Double = Double(text2.text!) as! Double
ここでForced cast from 'Double?' to 'Double' only unwraps optionals; did you mean to use '!'? と出てしまいました。
解決しなくてもビルドはできるのですが、なんとかしたいなということで色々試して下記のようにすることで消すことができました。
let x1 = Double(text1.text!) let x2 = Double(text2.text!) let y = x1! * x2!
短くなってスッキリしましたね。
このままではUITextFieldが空いている時にボタンを押すとアプリが落ちてしまう問題がありますが、とりあえず今回はここまで。