2つの問題があります。
_let amount:String? = amountTF.text
_
amount?.characters.count <= 0
_エラーが発生しています:
_Binary operator '<=' cannot be applied to operands of type 'String.CharacterView.IndexDistance?' (aka 'Optional<Int>') and 'In
_
let am = Double(amount)
エラーが発生しています:
_Cannot invoke initializer for type 'Double' with an argument list of type '(String?)'
_
これを解決する方法がわかりません。
_amount?.count <= 0
_ここでの量はオプションです。 nil
ではないことを確認する必要があります。
_let amount:String? = amountTF.text
if let amountValue = amount, amountValue.count <= 0 {
}
_
_amountValue.count <= 0
_は、amount
がnilでない場合にのみ呼び出されます。
このlet am = Double(amount)
についても同じ問題。 amount
はオプションです。
_if let amountValue = amount, let am = Double(amountValue) {
// am
}
_
あなたの文字列は '? "を持っているのでオプションです。nilになる可能性があり、それ以上のメソッドは機能しないことを意味します。オプションの量が存在することを確認してから使用する必要があります:
方法1:
// If amount is not nil, you can use it inside this if block.
if let amount = amount as? String {
let am = Double(amount)
}
方法2:
// If amount is nil, compiler won't go further from this point.
guard let amount = amount as? String else { return }
let am = Double(amount)