Tutorials, tips, and tools to help you build your best iOS apps. So you’re starting to work with Combine, because Apple is finally jumping on the reactive programming bandwagon (yay!). So you build your first Combine workflow, and it looks something like this: func retrieveData() { URLSession.shared.dataTaskPublisher(for: url) .map({$0.data}) .eraseToAnyPublisher() .sink(receiveCompletion: { (stat
![Save that sink! A simple solution to a common Combine problem](https://cdn-ak-scissors.b.st-hatena.com/image/square/aedf273d98fe82a5f23fcc381ac53776e2b76e35/height=288;version=1;width=512/https%3A%2F%2Fwww.appsdissected.com%2Fwp-content%2Fuploads%2F2019%2F10%2FApps-Dissected-Featured-Image-Save-That-Sink.png)