[解決済み] Optional Boolの値をチェックする
質問
Optional Boolがtrueかどうかを調べたいとき、この方法ではうまくいきません。
var boolean : Bool? = false
if boolean{
}
このようなエラーになります。
オプションの型 '@IvalueBool?' はブール値として使用できません; '!= nil' をテストしてください。 代わりに
nilをチェックしたいのではなく、返された値がtrueかどうかをチェックしたいのです。
常に
if boolean == true
をしなければならないのでしょうか?
オプショナルは
BooleanType
に準拠しなくなったので、コンパイラは私がBoolの値をチェックしたいことを知るべきではありませんか?
どのように解決するのですか?
オプションのブーリアンでは、チェックを明示的にする必要があります。
if boolean == true {
...
}
そうでなければ、オプショナルをアンラップすることができます。
if boolean! {
...
}
しかし、これは boolean が
nil
- にして、それを防ぐことができます。
if boolean != nil && boolean! {
...
}
ベータ5以前は可能でしたが、リリースノートで報告されているように変更されました。
オプショナルな Bool 値を扱う際の混乱を避けるため、オプショナルが値を持つときは暗黙的に true、持たないときは false と評価されなくなりました。その代わりに、オプショナルが値を含んでいるかどうかを見つけるために、== または != 演算子で nil に対する明示的なチェックを行います。
追記: @MartinR によって提案されたように、3 番目のオプションに対するよりコンパクトなバリエーションは、合体演算子を使用することです。
if boolean ?? false {
// this code runs only if boolean == true
}
つまり、boolean が nil でない場合、式は boolean 値として評価され(つまり、ラップされていない boolean 値を使用)、それ以外の場合、式は
false
関連
-
[解決済み】boolのprintfフォーマット指定子とは?
-
[解決済み】Swiftのオプション値とは何ですか?
-
[解決済み] Swiftです。nilのオプショナルをテストする
-
[解決済み] SwiftでOptionalにデフォルト値を提供する?
-
[解決済み] Swift 4 の JSONDecoder で、見つからないキーは、オプションのプロパティである必要はなく、デフォルト値を使うことができますか?
-
[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?
-
[解決済み] Swiftの変数に"?"(クエスチョンマーク)と"!"(エクスクラメーションマーク)の装飾を施す。
-
[解決済み] Xcode 8.3 betaの「String interpolation produces a debug description for an optional value; did you mean to make this explicit?
-
[解決済み] Swiftでenumの関連値を無視して比較する方法は?
-
[解決済み] Swift で型に表示されるテキスト表現を変更するにはどうしたらいいですか?
最新
-
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で1つのビューコントローラの向きを縦向きのみに固定する方法
-
[解決済み] 既存のUIKitアプリケーションにSwiftUIビューを含める
-
[解決済み] Swiftで警告を消すには?
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?
-
[解決済み] ビルド入力ファイルが見つかりません」Swift 4.2、Xcode 10.0
-
[解決済み] Swift: switch ケースでオプションの値に対するテストを行う
-
[解決済み] SwiftUIのForEachでインデックスを取得する
-
[解決済み] Swiftでenumの関連値を無視して比較する方法は?
-
[解決済み] Swiftでクラスメソッド/プロパティを作成するには?