Avec Swift 5, vous pouvez implémenter une Optionalextension pour Stringtype avec une propriété booléenne qui renvoie si une chaîne facultative n'a pas de valeur ou est vide:
extension Optional where Wrapped == String {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Cependant, Stringimplémente la isEmptypropriété en se conformant au protocole Collection. Par conséquent, nous pouvons remplacer la contrainte générique du code précédent ( Wrapped == String) par une plus large ( Wrapped: Collection) afin que Array, Dictionaryet Setégalement bénéficier de notre nouvelle isNilOrEmptypropriété:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Utilisation avec Strings:
let optionalString: String? = nil
print(optionalString.isNilOrEmpty) // prints: true
let optionalString: String? = ""
print(optionalString.isNilOrEmpty) // prints: true
let optionalString: String? = "Hello"
print(optionalString.isNilOrEmpty) // prints: false
Utilisation avec Arrays:
let optionalArray: Array<Int>? = nil
print(optionalArray.isNilOrEmpty) // prints: true
let optionalArray: Array<Int>? = []
print(optionalArray.isNilOrEmpty) // prints: true
let optionalArray: Array<Int>? = [10, 22, 3]
print(optionalArray.isNilOrEmpty) // prints: false
Sources: