В Swift 5 вы можете реализовать расширение Optional
для типа String
с логическим свойством, которое возвращает, если необязательная строка пуста или не имеет значения:
extension Optional where Wrapped == String {
var isEmptyOrNil: Bool {
return self?.isEmpty ?? true
}
}
Однако String
реализует свойство isEmpty
в соответствии с протоколом Collection
. Поэтому мы можем заменить общее ограничение предыдущего кода (Wrapped == String
) на более широкое (Wrapped: Collection
), чтобы Array
, Dictionary
и Set
также использовали наше новое свойство isEmptyOrNil
:
extension Optional where Wrapped: Collection {
var isEmptyOrNil: Bool {
return self?.isEmpty ?? true
}
}
Использование с String
s:
let optionalString: String? = nil
print(optionalString.isEmptyOrNil) // prints: true
let optionalString: String? = ""
print(optionalString.isEmptyOrNil) // prints: true
let optionalString: String? = "Hello"
print(optionalString.isEmptyOrNil) // prints: false
Использование с Array
s:
let optionalArray: Array<Int>? = nil
print(optionalArray.isEmptyOrNil) // prints: true
let optionalArray: Array<Int>? = []
print(optionalArray.isEmptyOrNil) // prints: true
let optionalArray: Array<Int>? = [10, 22, 3]
print(optionalArray.isEmptyOrNil) // prints: false
Источники:
person
Imanou Petit
schedule
23.01.2019