@mbmb0423 (た しょー)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Swift言語の初歩的な質問です。

Swift言語についての質問です。

テキストフィールドに入力された値を何かしら計算するという単純なプログラムがあったとして、そこに例えば"あ”などといった文字が入力された時、もちろん計算はできずエラーになります。

そこで、テキストフィールドに入力された文字がもし数字以外であれば計算をしない、数字であれば計算をするといった条件ができる書き方はありますか?

初歩的な質問で大変恐縮ですが、どなたかご回答いただければ幸いです。

0 likes

1Answer

StringDoubleなどに変換する処理をどこかで掛けることになるかと思います。
この際次のようにすれば大丈夫です。

if let x = Double("あ"){
    print(x)
}else{
    print("数値として認識できませんでした")    //こちらが呼ばれる
}

if let x = Double("1.2"){
    print(x)                             //こちらが呼ばれる
}else{
    print("数値として認識できませんでした")
}

Stringを引数にとるDoubleのイニシャライザはOptional<Double>を返すので、if letで処理することができます。
変な値が入ってきた場合は変換に失敗してnilが返ってくるので、返ってきた値がnilかどうかで処理を分けているのと大体同じことになるはずです。

(追記)意味的には次のような処理と同義です。

let x: Double? = Double("あ")
if x != nil {
    print(x!)
}else{
    print("数値として認識できませんでした")    //こちらが呼ばれる
}

let y: Double? = Double("1.2")
if y != nil {
    print(y!)                             //こちらが呼ばれる
}else{
    print("数値として認識できませんでした")
}
0Like

Your answer might help someone💌