完全に正しいわけではありません。問題は、int への変換もオプションであることです。たとえば、これはクラッシュします (というか、コンパイル エラーが発生します)。
let myDictionary = [3: "3"]
let itemID = "b"
if let myTestKonstant = myDictionary[Int(itemID)] {
print(myTestKonstant)
}
これは保存方法です:
if let itemKey = Int(itemID), let myTestKonstant = myDictionary[itemKey] {
print(myTestKonstant)
}
アップデート
より明確に、さまざまなケースで何が起こるかを説明します。
itemID
can't be convert to an Int
: これは、 thatitemKey
が になることを意味しますnil
。したがって、2 番目の部分はテストされず、 if の内容は実行されません。
itemID
に変換できますがInt
、既存のキーではありません。この場合itemKey
、 に設定され、Int
itemID
に変換されます。次に、2 番目のステートメントがテストされitemKey
ますが、既存のキーとして見つからないため、myDictionary[itemKey]
戻りnil
ますが、if の内容は実行されません。
itemID
Int
辞書のキーとして存在するに変換できます。前のケースと同様に、itemKey
が設定され、キーが見つかったので、が入力され、キーの対応する値が(のように)myTestKonstant
でない限り、if の内容が実行されます。nil
[3: nil]