Skip to content

Instantly share code, notes, and snippets.

View masliukivskyi's full-sized avatar

masliukivskyi

View GitHub Profile
_ = dataProvider
.decode(type: DummyDecodable.self, decoder: JSONDecoder())
.map({ (decodable) -> String in
return "The user is \(decodable.userName) and his id is \(decodable.userId)"
})
.sink(receiveCompletion: { completion in
print(completion)
}, receiveValue: { response in
print(response)
})
@masliukivskyi
masliukivskyi / comb9.swift
Last active May 4, 2020 18:06
Combine example
// mapping
_ = [1,2,3,5,8,12]
.publisher
.map { $0%2 }
.sink(receiveValue: { (value) in
print(value)
})
Output: 1 0 1 1 0 0
@masliukivskyi
masliukivskyi / comb8.swift
Last active May 3, 2020 20:38
Basics of Combine
subject
.handleEvents(
receiveSubscription: { (subscription) in
print("Received a subscription: \(subscription)")
}, receiveOutput: { (output) in
print("Received an output: \(output)")
}, receiveCompletion: { (completion) in
switch completion {
case .finished:
print("Finished with success")
@masliukivskyi
masliukivskyi / comb7.swift
Created April 27, 2020 23:19
Basics of Combine
let subject = CurrentValueSubject<String, Never>("This text should not be sent")
subject.send("😉")
let subscriber1 = subject.sink { (value) in
print("First subscriber received value: \(value)")
}
subject.send("🐶")
let subscriber2 = subject.sink { (value) in
@masliukivskyi
masliukivskyi / comb6.swift
Created April 27, 2020 23:18
Basics of Combine
let subject = CurrentValueSubject<String, Never>("This text should not be received")
subject.send("😉")
subject.sink { (value) in
print("Received value: \(value)")
}
subject.send("🐶”)
Output:
Received value: 😉
Received value: 🐶
@masliukivskyi
masliukivskyi / comb5.swift
Created April 27, 2020 23:17
Basics of Combine
let subject = PassthroughSubject<String, Never>()
subject.send("😉")
subject.sink { (value) in
print("Received value: \(value)")
}
subject.send("🐶”)
Output:
@masliukivskyi
masliukivskyi / comb4.swift
Created April 27, 2020 23:16
Basics of Combine
let sequence = Publishers.Sequence<[String], Never>(sequence: ["Hello", "World”])
sequence
.sink(receiveCompletion: { (completion) in
switch completion {
case .finished:
print("Finished")
case .failure(let error):
print("Finished with error \(error)")
}
@masliukivskyi
masliukivskyi / comb2.swift
Created April 27, 2020 23:15
Basics of Combine
let welcome = "Welcome”.publisher
welcome.sink { (value) in
print(value)
}
Output: W e l c o m e
@masliukivskyi
masliukivskyi / comb2.swift
Last active May 3, 2020 20:31
Basics of Combine
let pets = ["🐶", "🐱", "🐭", "🐹"].publisher // pets type is Publishers.Sequence<Array<String>, Never>
pets.sink { (value) in
print(value)
}
@masliukivskyi
masliukivskyi / comb1.swift
Created April 27, 2020 23:11
Basics of Combine
let just = Just("First publisher!")
let sequence = Publishers.Sequence<[String], Never>(sequence: ["Hello", "World"])
just.sink { (value) in
print(value)
}
sequence.sink { (value) in
print(value)
}