Q&A
実現したいこと
・String型の複数の変数をまとめてInt型へキャストして演算結果をText表示させたい
・この方法をとらずに他の方法があれば教えていただきたいです。
前提
このようなアプリをswiftUIで実装しています。
・5つのtextFieldに値を入力してButtonをタップすると演算結果(加算)がテキストに表示する計算アプリ
ここに質問の内容を詳しく書いてください。
発生している問題・エラーメッセージ
[問題]
・関数を定義し、5つのtextFieldの変数をまとめてInt型へキャストして演算を行ったところ、文字列が連結した状態でキャストしているので加算が行われないという問題が発生しました。2つtextFieldに1と1をそれぞれ入力してButtonをタップすると11と表示してしまう。
[実現したいこと]
これを2と表示できるようにしたいです。
他にこういうやり方の方が簡単であったり、こういうやり方も存在するなどの方法があればご教授いただけたらと思っています。
該当のソースコード
swiftUI
1import SwiftUI 2 3struct ContentView: View { 4 5 @State var textFieldOne = "" 6 @State var textFieldTwo = "" 7// @State var textFieldThree = "" 8// @State var textFieldFour = "" 9// @State var textFieldFive = "" 10 @State var result = "Label" 11 @State var num = 2 12 13 var body: some View { 14 15 VStack { 16 Group { 17 TextField("", text: $textFieldOne) 18 19 TextField("", text: $textFieldTwo) 20// 21// TextField("", text: $textFieldThree) 22// 23// TextField("", text: $textFieldFour) 24// 25// TextField("", text: $textFieldFive) 26 } 27 .textFieldStyle(.roundedBorder) 28 .frame(width: 120) 29 .keyboardType(.numberPad) 30 31 Button(action: { 32 num = calc() 33 result = String(num) 34 35 }, label: { 36 Text("Button") 37 }) 38 .padding() 39 40 Text(result) 41 } 42 } 43 44 func calc() -> Int { 45 //textFieldOneの値とtextFieldTwoの値が文字列により連結した状態からでキャストしている。これを改善しないといけない。そのためにはキャストした状態から加算式を定義してあげないといけない 46 if let result = Int(textFieldOne + textFieldTwo) { 47 return result 48 } else { 49 return -1 50 } 51 } 52} 53
### 試したこと 現在進行中です。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/02/26 10:20