Con Swift 5, puede implementar una Optionalextensión para el Stringtipo con una propiedad booleana que devuelve si una cadena opcional no tiene valor o está vacía:
extension Optional where Wrapped == String {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Sin embargo, Stringimplementa la isEmptypropiedad conforme al protocoloCollection . Por lo tanto, podemos reemplazar la restricción genérica del código anterior ( Wrapped == String) con una más amplia ( Wrapped: Collection) para que Array, Dictionaryy Settambién beneficiar nuestra nueva isNilOrEmptypropiedad:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Uso con 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
Uso con 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
Fuentes: