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

后端 未结 3 2015
轻奢々
轻奢々 2020-12-06 10:58

I have two issues:

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

It\'s giving error

相关标签:
3条回答
  • 2020-12-06 11:38

    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  
    }
    
    0 讨论(0)
  • 2020-12-06 11:43

    Another reason for the error is amount it should not be null

    let am = Double(amount!)
    

    with check contol

    if amount != nil {
       let am = Double(amount!)
    }
    
    0 讨论(0)
  • 2020-12-06 12:03

    Your string is optional because it had a '?", means it could be nil, means further methods would not work. You have to make sure that optional amount exists then use it:

    WAY 1:

    // If amount is not nil, you can use it inside this if block.
    
    if let amount = amount as? String {
    
        let am = Double(amount)
    }
    

    WAY 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)
    
    0 讨论(0)
提交回复
热议问题