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

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

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

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

Q&A

解決済

1回答

1315閲覧

Swift3 辞書のキーがnilだったとき、nilじゃないキーを指定したときの値を(UILabelに)表示したままにする

mitci

総合スコア37

Swift

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

0グッド

0クリップ

投稿2017/08/21 11:04

編集2017/08/21 11:35

###前提・実現したいこと
UITextFieldに入力された文字が辞書のキーと一致したとき、
UILabelにキーに対する値を表示するというアプリを作りました。
ですが、辞書のキーにない語句を入力してしまった時に、
当たり前なのですが値はnilとなりUILabelの文字列は消えてしまいます。

ですが、
存在しないキーを入力した時、 そのまま前回の値が表示されたまま にしたいのです。

###具体例
たとえばvar dict = ["apple":"りんご", "grape":"ぶどう", "peach":"もも"]という辞書があったとき、
1)UITextFieldにappleと入力する
2)UILabelにりんごと表示される
3)存在しないキーcherryと入力する
4)UILabelはそのままりんごと表示されたまま

という処理にしたいのです。
もちろん、そのあとに存在するキーであるgrapeと入力されたらぶどうと返ってくるように・・・

つまり、

swift

1if 辞書キーがnil { 2 valueLabel.text = 前回nilじゃなかったときに引き出した値 3} else { 4 valueLabel.text = dict[textField.text!] 5}

としたいのです・・・


上記「nilじゃなかったとき」のキーはappleの場合もgrapeの場合もあり、辞書のキーは場合によってはさらに増やすことになるため、
動的に「前回nilじゃなかったときのキーで引き出した値」としたいのです

###試したこと
オプショナルバインディングでどうにかなるのだろうか、と考えてみましたが、
前回の「存在する辞書キー」によって表示された値を保持しておく方法がやはりわかりません・・・
###補足情報(言語/FW/ツール等のバージョンなど)
Swift3 Xcode8

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

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

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

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

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

guest

回答1

0

ベストアンサー

swift

1if let label = dict[textField.text!] { 2 valueLabel.text = label 3}

投稿2017/08/21 12:01

MasakiHori

総合スコア3371

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

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

mitci

2017/08/24 12:12

遅くなりましたが、 完璧に処理できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問