文字列の入力エラーを検出してユーザーに通知する方法が必要です。 次の例を見てください:Swiftのコンパイラエラーを回避するためにOptionalsを使用する方法
let fraction = "15/8"
let fractionArray = fraction.components(separatedBy: "/")
let numerator = Double(fractionArray[0])
let denominator = Double(fractionArray[1])
var linearFactor = numerator!/denominator!
print(numerator!, "/", denominator!, " = ", linearFactor)
しかし、私はアンラップを強制する場合は、文字列内の無効な文字は、コンパイルエラーを強制し、私はむしろ、入力文字列が無効な分数が含まれていることをユーザに通知したいです。オプションの連鎖はやり方のように思えますが、私は構文の権利を得ることができません。
私のコード(は)の下に、fraction?.components(separatedBy: “/“)
を含む配列の隣にオプションの連鎖演算子を配置しますが、Fix-itはそれを削除するように指示します。
この問題に対処するためのオプションのチェーンよりも良い方法がある場合は、誰かが私が答えを検索したときに逃したかもしれないものを説明してください。hereコードを動作させることができますか?おかげ
let fraction = “15/8”
if let fractionArray = fraction?.components(separatedBy: “/“) {
let numerator = Double(fractionArray[0])
let denominator = Double(fractionArray[1])
var linearFactor = numerator/denominator
print(numerator, "/", denominator, " = ", linearFactor)
} else {
print(“Invalid. Re-enter fraction”)
}
'分数?コンポーネント(separatedBy:"/")は最も明白な場所のようです - 何?それははっきりとは逆です。 'fraction'は間違いなくOptionalですが、' components(separatedBy:) 'の結果はです。そして '?'はここでは宣言されていませんが、オプションの連鎖演算子です。 – user28434
実際にあなたの前の質問への両方の答えhttp://stackoverflow.com/questions/41336818/can-i-split-a-numeric-string-using-multiple-separators-in-a-swift-closure使用方法の表示*強制的なアンラップの代わりにオプションのバインディング*。 –
参照[オプションの値とnilを比較する必要はいつですか](http://stackoverflow.com/questions/29717210/when-should-i-compare-an-optional-value-to-nil)強制アンラッピングを避ける方法の良い例。 - Btw、アンラッピングnilは*ランタイムエラーです。*コンパイルエラーではありません。 –