我有两个问题:
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?)'
我不知道如何解决这个问题。
答案 0 :(得分:14)
amount?.count <= 0
此处金额是可选的。您必须确保它不是nil
。
let amount:String? = amountTF.text
if let amountValue = amount, amountValue.count <= 0 {
}
只有在amountValue.count <= 0
不为零时才会调用{p> amount
。
此let am = Double(amount)
的问题相同。 amount
是可选的。
if let amountValue = amount, let am = Double(amountValue) {
// am
}
答案 1 :(得分:8)
你的字符串是可选的,因为它有一个&#39;?&#34;,意味着它可能是零,意味着进一步的方法不起作用。您必须确保存在可选金额,然后使用它:
方式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)
答案 2 :(得分:0)
错误的另一个原因是 amount (金额)
let am = Double(amount!)
带有检查控制
if amount != nil {
let am = Double(amount!)
}