【Error】Comparing non-optional value of type ‘XXX’ to ‘nil’ always returns true / false

【Error】Comparing non-optional value of type ‘XXX’ to ‘nil’ always returns true / false

エラー解消方法の備忘録_φ(・_・ )

発生したエラー

Comparing non-optional value of type ‘XXX’ to ‘nil’ always returns true / false

翻訳

XXXという非オプショナル値と’nil’を比較すると、常にtrue / false を返します。

原因

非オプショナルの値とnilを比較すると常にtrueかfalseが返されます。
単純にnilと比較することはできません。

・常にtrueが返される例

  let alwaysTrue: Any = [] //非オプショナル型
  if alwaysTrue != nil {
  }

・常にfalseが返される例

  let alwaysFalse: Any = [] //非オプショナル型
  if alwaysTrue == nil {
  }
Attention

nilかどうかを判定しているのではなく、
比較演算子が[!=]であればtrue
比較演算子が[==]であればfalse
が固定で返ってきます\_(・ω・`)ココ重要!

解決手順

nilになる可能性がある場合、比較対象をオプショナル型にする。
nilにならないことが確実な場合は、if条件を削除する。

Attention

もし仮にnilになった場合はクラッシュの原因になるのでオプショナル型にするのが無難(∩’-‘⊂)シュッ

参考サイト

https://stackoverflow.com/questions/58637530/comparing-non-optional-value-of-type-json-to-nil-always-returns-true-any-su

Swiftカテゴリの最新記事