問題タブ [optional-binding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - optional(nil) を評価するオプションのバインディングでの望ましくない動作
xCode をバージョン 10 (および Swift 4.2) に更新した後、オプションのバインディングで奇妙な動作が発生しました
コードは以下のとおりで、json ファイルの読み取りに関するものでT
、ジェネリック型です (こちらString
) 。
xCode 9.4.1 および Swift 4.1 では、次のログがあります。
それが私が望むものでvalues[langCode!]
ありnil
、キャストも返さnil
れるため、else
ブロックが実行されます。
Swift 4.2 を使用した xCode 10 には、次のログがあります。
ここではif let
、values[langCode!] が「null」であってもブロックが実行されます。
1 つの違いは、Swift 4.2values[langCode!] as? T
では でOptional(nil)
あり、Swift 4.1values[langCode!] as? T
では ですnil
。
バージョン 4.2の変更ログを確認しましたが、その動作を説明できるものは見当たりませんでした。また、JSONSerialization (json ファイルのシリアル化に使用) に変更が加えられていないことも確認しました。
Swift4.2 に切り替えたときに、そのようなことを経験した人もいますか? 誰か説明がありますか?回避策はありますか?
この種のコードでは、オプションのバインディングを使用する利点は何ですか? if (values[langCode!] != nil) {...
オプションのバインディングの代わりに書くのは悪いでしょうか?
ありがとう
swift - 同時に迅速なオプションメンバーを初期化してバインドしますか?
私のクラスには、次のようなオプションのメンバー プロパティが含まれています。
これらの変数を初期化して使用したい場合、次のようなことをしなければなりません。
これら2つの操作を迅速に組み合わせる方法はありますか?
swift - オプションのバインディングで負の式の複数の値をチェックする方法は?
2 つのオプション変数がすべて null かどうかを確認したい。たとえば、C では、
Swiftでこれを行う方法はありますか?