Skip to content

Instantly share code, notes, and snippets.

View Arrlindii's full-sized avatar

Arlind Aliu Arrlindii

View GitHub Profile
let keyboardWillOpen = NotificationCenter.default
.publisher(for: UIResponder.keyboardWillShowNotification)
.map {$0.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! CGRect}
.map {$0.height}
let keyboardWillHide = NotificationCenter.default
.publisher(for: UIResponder.keyboardWillHideNotification)
.map { _ in CGFloat(0)}
let germanCities = PassthroughSubject<String, Never>()
let italianCities = PassthroughSubject<String, Never>()
let europianCities = Publishers.Merge(germanCities, italianCities)
_ = europianCities.sink(receiveValue: { city in
print("\(city) is a city in europe")
})
germanCities.send("Munich")
germanCities.send("Berlin")
_ = Publishers.Sequence(sequence: [1,2,2,3,3,4,7])
.map { $0 * 2 }
.flatMap { Publishers.Just($0) }
.filter { $0.isMultiple(of: 2) }
.dropFirst(3)
.removeDuplicates()
.sink(receiveValue: { value in
print(value)
})
_ = Publishers.Sequence(sequence: [1,2,4])
.map { $0 * 10 }
.flatMap { Publishers.Just($0) }
.sink(receiveValue: {
print($0)
})
let subject = PassthroughSubject<String, Never>()
let publisher = subject.eraseToAnyPublisher()
let subscriber1 = publisher.sink(receiveValue: { value in
print(value)
})
//subscriber1 will recive the events but not the subscriber2
subject.send("Event1")
let subject = PassthroughSubject<String, Never>()
let publisher = subject.eraseToAnyPublisher()
let subscriber = publisher.sink(receiveValue: { value in
print(value)
})
subject.send("Combine") //The Subscriber will print "Combine"
subject.send("Swift") //The Subscriber will print "Swift"
let subscriber = publisher.sink(receiveCompletion: { _ in
print("finished")
}) { value in
print(value)
}
let publisher = Publishers.Just("Combine Swift")
let subscribtion = publisher.sink { value in
print(value)
}
let publisher = Publishers.Just("Combine Swift")
let sequencePublisher = let publisher = Publishers.Sequence(sequence: [1,2,3,5,6])
protocol DisountStrategy {
func presentDiscountMessage()
}
struct NoDiscountStrategy: DisountStrategy {
//Provides handling for non discount case
}
struct DefaultDiscountStrategy: DisountStrategy {
//Provides handling for discount case