三項条件演算子でオプション変数を使用したいのですが、次のエラーをスローしています:optionalをブール値として使用することはできません。 ?
var str1: String?
var myBool:Bool
myBool = str1 ? true : false
文字列値をboolに割り当てることはできませんが、str1がnilであるか、このようになっていないかを確認できます。
myBool = str1 != nil ? true : false
print(myBool)
Str1が空のため、falseが出力されます。
Nil Coalescing Operatorも使用できます。以下のコードは、三項条件演算子と強制アンラップ(a!)を使用して、aがnilでない場合はaでラップされた値にアクセスし、そうでない場合はbを返します。
通常の三項演算子:
output = a != nil ? a! : b
Apple Developer Link : デモリンク を参照してください
Swift 1.2&2では、上記のコード行はより短い形式に置き換えられています。
output = a ?? b
デモリンク :nil合体演算子(a ?? b)は、値が含まれている場合はオプションのaをアンラップし、aがnilの場合はデフォルト値bを返します。
これは、必要な値がオプション(Swift 3.0内)での関数呼び出しのプロパティまたは結果である場合でもうまく機能します。
return peripheral?.connected ?? false
三項演算子 3つのターゲットで動作します。 Cと同様に、Swiftには、三項演算子(a?b:c)のみがあります。
tableView
の使用例-
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return section == 2 ? 4 : 1
}
セクションが2に等しい場合は4を返し、そうでない場合は1を返します。
比較が何らかの条件に基づいている場合
let sliderValue = Float(self.preferenceData.getLocationRadius().characters.count > 1 ?self.preferenceData.getLocationRadius():"0.1")
ここで、関数getLocationRadius()は文字列を返します。 1と?の間にスペースを入れない場合、もう1つあります。構文エラーが発生します