if (tweet?.media.count)! < 0
さえずるタイプのクラスで、オプションのツイートこの行を感嘆符で囲む必要があるのはなぜですか?迅速な3
メディアタイプである[mediaitem]
カウントは、なぜ私は感嘆符が必要なのかのタイプのInt
のでしょうか?
if (tweet?.media.count)! < 0
さえずるタイプのクラスで、オプションのツイートこの行を感嘆符で囲む必要があるのはなぜですか?迅速な3
メディアタイプである[mediaitem]
カウントは、なぜ私は感嘆符が必要なのかのタイプのInt
のでしょうか?
tweet
は任意ですので、値はnil
です。オプションの連鎖(?.
演算子をtweet
とmedia
の間に使用すると)残りの式もnil
である可能性があります。結局のところ、nil
ツイートの非nil
メディアアイテムの配列を取得することはできません。
式の最後には、0に直接匹敵しないオプションのIntが残っています。そのため、!
演算子を使用してカウントを強制的に展開しないようにコンパイラに指示します。
は、私は個人的には良い方法だと思う - の代わりに力アンラップの、あなたはtweet
は、フロントアップnil
であるかどうかを確認することができます。tweet
はnil
ではない場合
if let tweet = tweet, tweet.media.count < 0 {
// …
}
条件付きで、この唯一の収入のようなif let
を使用します。その後、次の式で、残りの計算にアンラップされた非オプショナルのツイートを使用することができます。
Xcodeが '!'演算子の推薦を止めたいと思っています。力アンラッピングに起因するクラッシュについてSOに掲載された迅速な質問は5,000件少なくなります。 – rmaddy
これで何らかの理由でxcodeは私にそれ以上のことを強いられません。私は感嘆符を外してコンパイルすることができます。私はなぜ時々その '私は後で大丈夫何かをするように言っていない。 –
[オプションの連鎖](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html)式はオプションの値を返します。オプションの値を比較することはできません'' Int'にアンラップする必要があります。 – Keiwan
* "どうして私は感嘆符が必要なのですか?" *したがって、あなたが 'tweet'が' nil'のときにあなたのアプリがクラッシュするのを楽しむことができます。 :) – rmaddy
なぜそれは私にもうエラーを与えていないのですか? つぶやく場合は.media.count == 0 {return ""} else {return "Images"} –