Com o Swift 5, você pode implementar uma Optionalextensão para o Stringtipo com uma propriedade booleana que retorna se uma sequência opcional não tiver valor ou estiver vazia:
extension Optional where Wrapped == String {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
No entanto, Stringimplementa a isEmptypropriedade conforme o protocolo Collection. Portanto, podemos substituir restrição genérica do código anterior ( Wrapped == String) com um mais amplo ( Wrapped: Collection) para que Array, Dictionarye Settambém beneficiar o nosso novo isNilOrEmptyimóvel:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Uso com 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 com 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
Fontes: