J'ai deux problèmes:
let amount:String? = amountTF.text
amount?.characters.count <= 0
C'est donner une erreur:
Binary operator '<=' cannot be applied to operands of type 'String.CharacterView.IndexDistance?' (aka 'Optional<Int>') and 'In
let am = Double(amount)
C'est donner une erreur:
Cannot invoke initializer for type 'Double' with an argument list of type '(String?)'
Je ne sais pas comment résoudre ça.
amount?.count <= 0
Ici le montant est optionnel. Vous devez vous assurer que ce n'est pas nil
.
let amount:String? = amountTF.text
if let amountValue = amount, amountValue.count <= 0 {
}
amountValue.count <= 0
Ne sera appelé que si amount
n'est pas nul.
Même problème pour cette let am = Double(amount)
. amount
est facultatif.
if let amountValue = amount, let am = Double(amountValue) {
// am
}
Votre chaîne est facultative car elle avait un "?", Cela signifie qu'elle pourrait être nulle, cela signifie que d'autres méthodes ne fonctionneraient pas. Vous devez vous assurer que ce montant facultatif existe, puis utilisez-le:
VOIE 1:
// If amount is not nil, you can use it inside this if block.
if let amount = amount as? String {
let am = Double(amount)
}
VOIE 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)