За допомогою Swift 5 ви можете реалізувати Optionalрозширення для Stringтипу з булевим властивістю, яке повертається, якщо необов'язковий рядок не має значення або порожній:
extension Optional where Wrapped == String {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Однак Stringреалізує isEmptyвластивість, дотримуючись протоколу Collection. Тому ми можемо замінити загальне обмеження попереднього коду ( Wrapped == String) на більш широке ( Wrapped: Collection), так щоArray , Dictionaryа Setтакож виграло наше нове isNilOrEmptyвластивість:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Використання з 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
Використання з 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
Джерела: