この質問がここにあることは承知していますが、私の質問への回答は部分的にしかなく、回答についてコメントできないため、ここに投稿せざるを得ません。
オプションのバインディングと単に ? を使用することの違いは何ですか。私の理解は、あなたが使用するときですか?変数のラップを解除するには、変数に nil 値が含まれている場合、それが使用されているコードは実行されません。(そうでない場合は訂正してください。)
この質問がここにあることは承知していますが、私の質問への回答は部分的にしかなく、回答についてコメントできないため、ここに投稿せざるを得ません。
オプションのバインディングと単に ? を使用することの違いは何ですか。私の理解は、あなたが使用するときですか?変数のラップを解除するには、変数に nil 値が含まれている場合、それが使用されているコードは実行されません。(そうでない場合は訂正してください。)
変数が ではない場合にのみ実行するコード ブロックがある場合は、オプションの binding ( )を使用します。if let
nil
オプションの連鎖( ?
) は、オプションの変数のプロパティ/メソッドにアクセスする場合にのみ使用します。
しかし、オプションの連鎖が不可能な状況があります (つまり、オプション変数のプロパティ/メソッドにアクセスしているのではなく、その変数を他の目的に使用している場合など)。例えば
// let's assume `data` is a `NSData?` optional
if let imageData = data {
let image = UIImage(data: imageData)
// now do something with `image`
}
これを行うのは、このコンテキストではオプションの連鎖を使用できないためlet image = UIImage(data: data!)
です。data
nil