Skip to content

Instantly share code, notes, and snippets.

View xxtesaxx's full-sized avatar

Jan Thielemann xxtesaxx

View GitHub Profile
infix operator ???: NilCoalescingPrecedence
extension Optional where Wrapped: Emptyable {
static func ???(left: Wrapped?, right: Wrapped) -> Wrapped {
return left.orWhenNilOrEmpty(right)
}
}
let optionalString: String? = nil
let mandatoryString = optionalString ??? "Default Value"
struct MyStruct: Emptyable, CustomStringConvertible {
var name: String
var isEmpty: Bool { return name.isEmpty }
var description: String { return name }
init(name: String) {
self.name = name
}
}
var myOptional: MyStruct? = nil
protocol Emptyable {
var isEmpty: Bool { get }
}
extension Optional where Wrapped: Emptyable {
func orWhenNilOrEmpty(_ defaultValue: Wrapped) -> Wrapped {
switch(self) {
case .none:
return defaultValue
case .some(let value) where value.isEmpty:
extension Optional where Wrapped == String {
func orWhenNilOrEmpty(_ defaultValue: String) -> String {
switch(self) {
case .none:
return defaultValue
case .some(let value) where value.isEmpty:
return defaultValue
case .some(let value):
return value
}
cell.myLabel.text = myModel.someString
if let text = myModel.someString, !text.isEmpty {
cell.myLabel.text = text
} else {
cell.myLabel.text = "Text is empty"
}