Reactive Programming in iOS with Combine, Episode 22: Challenge: Advanced Combining | Kodeco


This is a companion discussion topic for the original entry at https://www.kodeco.com/5429795-reactive-programming-in-ios-with-combine/lessons/22

Here is the simplified code for this challenge. We can use multiple publisher in zip. (zip3, zip4 …)

example(of: "Making Phone Numbers Part 2") {
    
    let phoneNumbersPublisher = ["123-4567", "555-1212", "555-1111", "123-6789"].publisher
    let areaCodePublisher = ["410", "757", "800", "540"].publisher
    let phoneExtensionPublisher = ["EXT 901", "EXT 523", "EXT 137", "EXT 100"].publisher
    
    areaCodePublisher
        .zip(phoneNumbersPublisher, phoneExtensionPublisher)
        .map{"\($0.0)-\($0.1) \($0.2)"}
        .sink(receiveValue: { print($0) })
        .store(in: &subscriptions)
}