Với Swift 5, bạn có thể triển khai Optional
tiện ích mở rộng cho String
loạ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, String
thực hiện isEmpty
tà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
, Dictionary
và Set
cũng được hưởng lợi mới của chúng tôi isNilOrEmpty
sở hữu:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
return self?.isEmpty ?? true
}
}
Sử dụng với String
s:
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 Array
s:
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: