[解決済み] Swiftでオプショナルをダウンキャストする:as? タイプ、または as! タイプ?
2023-01-01 02:23:33
質問
Swiftで次のように記述します。
var optionalString: String?
let dict = NSDictionary()
次の2つの文の実際的な違いは何ですか。
optionalString = dict.objectForKey("SomeKey") as? String
対
optionalString = dict.objectForKey("SomeKey") as! String?
どのように解決するのですか?
現実的な違いはこうです。
var optionalString = dict["SomeKey"] as? String
optionalString
は型変数
String?
. もし、基礎となる型が
String
でない場合、これは単に
nil
をオプショナルに割り当てるだけです。
var optionalString = dict["SomeKey"] as! String?
これは、私
知っている
このことは
String?
. これも結果的に
optionalString
という型になります。
String?
,
しかし
を指定すると、基礎となる型が他のものである場合にクラッシュします。
最初のスタイルは
if let
を使ってオプショナルを安全にアンラップします。
if let string = dict["SomeKey"] as? String {
// If I get here, I know that "SomeKey" is a valid key in the dictionary, I correctly
// identified the type as String, and the value is now unwrapped and ready to use. In
// this case "string" has the type "String".
print(string)
}
関連
-
[解決済み] Swiftのstatic funcとclass funcの違いは何ですか?
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] なぜ「Implicitly Unwrapped Optionals」を作るのか、それは値があることを知っていることを意味しているからです。
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み] SwiftでStringのサブストリングはどのように動作するか
-
[解決済み】==と===の違いについて
-
[解決済み】なぜ、Swiftの文字列では、?のような絵文字が奇妙に扱われるのですか?
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
-
[解決済み] Swift 3でカスタム通知を作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] swiftのクエスチョンマーク''の意味は何ですか?[重複しています]
-
Swift の Optional 値 && Optional のアンラップ時に予期せず nil が検出された場合の説明
-
[解決済み] swiftで改行なしの印刷をする
-
[解決済み] 既存のUIKitアプリケーションにSwiftUIビューを含める
-
[解決済み] Swiftのリバースレンジ
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
-
[解決済み] SwiftUIで条件付きでビューを使用する
-
[解決済み] Xcode 8.3 betaの「String interpolation produces a debug description for an optional value; did you mean to make this explicit?
-
[解決済み] Swift: switch ケースでオプションの値に対するテストを行う
-
[解決済み] Swiftでenumの関連値を無視して比較する方法は?