Search code examples
iosswiftxcodeint

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


I have two issues:

let amount:String? = amountTF.text
  1. amount?.characters.count <= 0

It's giving error :

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

It's giving error:

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

I don't know how to solve this.


Solution

  • amount?.count <= 0 here amount is optional. You have to make sure it not nil.

    let amount:String? = amountTF.text
    if let amountValue = amount, amountValue.count <= 0 {
    
    }
    

    amountValue.count <= 0 will only be called if amount is not nil.

    Same issue for this let am = Double(amount). amount is optional.

    if let amountValue = amount, let am = Double(amountValue) {
           // am  
    }