无法使用类型为'(String?)'的参数列表调用类型为'Double'的初始值设定项

时间:2017-10-28 11:19:42

标签: ios swift xcode int

我有两个问题:

let amount:String? = amountTF.text
  1. amount?.characters.count <= 0
  2. 这是错误的:

    Binary operator '<=' cannot be applied to operands of type 'String.CharacterView.IndexDistance?' (aka 'Optional<Int>') and 'In
    
    1. let am = Double(amount)
    2. 这是错误的:

      Cannot invoke initializer for type 'Double' with an argument list of type '(String?)'
      

      我不知道如何解决这个问题。

3 个答案:

答案 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!)
}