私が抱えている問題を示すために、いくつかのテストコードを作成しました。
これはプレイグラウンドで問題なくコンパイルされますが、プロジェクトに入れようとすると、Xcode は次の警告を表示します: Treating a forced downcast to 'String' as optional will never produce 'nil'
30行目。問題を解決するための 2 つの提案が与えられました。
Use 'as?' to perform a conditional downcast to 'String'
、これはまったく意味がありません。ただし、警告/エラーなしでコンパイルされます。これは、オプションの値をオプションではないタイプの に割り当てているため、奇妙に思えますString
。ダウンキャストが成功するかどうかわからない場合は、型キャスト演算子の条件付き形式 (as?) を使用します。この形式の演算子は常にオプションの値を返し、ダウンキャストが不可能な場合、値は nil になります。これにより、ダウンキャストが成功したかどうかを確認できます。
Swift 言語ガイドから。
変換が失敗した場合に割り当てたいと思われる場合を
nil
除き (したがって、辞書のエントリを削除します)、これは意味がありません。特に、文字通りそれがString
.Add parentheses around the cast to silence this warning
、これは無意味に思えますが、警告を黙らせます。これは奇妙なことのように思えますが、繰り返しますが、自分がやろうとしていることを本当にやりたいと思っていることを確認する方法としては不十分かもしれません.
どちらの選択肢が正しいか、どちらでもないか? この警告の原因は何ですか?