Với Swift 5, bạn có thể triển khai Optionaltiện ích mở rộng cho Stringloại có thuộc tính boolean trả về nếu một chuỗi tùy chọn không có giá trị hoặc trống:
extension Optional where Wrapped == String {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Tuy nhiên, Stringthực hiện isEmptytài sản bằng cách tuân thủ giao thức Collection. Vì vậy chúng tôi có thể thay thế chế generic mã trước ( Wrapped == String) với một rộng hơn ( Wrapped: Collection) do đó Array, Dictionaryvà Setcũng được hưởng lợi mới của chúng tôi isNilOrEmptysở hữu:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Sử dụng với 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
Sử dụng với 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
Nguồn: