In my post from last week I worked on creating a split lapse timer app (last week’s post). But later on when I was playing with the application I noticed that I naturally would like to have means to start or stop the timer.
Well this week I am implementing exactly this functionality.
The first thing I thought about was how to implement state in my app because a timer clearly has two distinct states either running or not running. That got me thinking about combining signals, mapping, you know, all the good stuff.
If you want to follow along you can download the starter project I prepared. It is in the shape where last weeks blog posts leaves off but I’ve added a couple of buttons in the user interface:
Download the starter project to follow along here: rx_laptimer_starter.zip
Now let’s put all those buttons to work!
I was browsing through RxMarbles and was totally baffled by the sample
function. The marble diagram looks pretty random at first sight:
At first I thought - “Hey, that second sequence is getting totally ignored!”. But after I read the description I figured it out:
The first sequence’s elements is what
sample
emits, while the second sequence’s elements determine whensample
emits. So in a way yes - the actual values A, B, C, D do get totally ignored.
When it was clear to me what sample
does I started wondering if this function has any practical application :]
This brought me to creating a split lap timer app to test what sample
can do for me. In the finished project I have a timer emitting time values (aka the first sequence) and I want to grab (or sample) the values whenever the user taps a button (aka the second sequence).
Here’s how the marble diagram looks like for the app setup:
And this is how the app looks like when finished:
Let’s build that app :]
I was reading through the RxSwift docs and did a little test to see if I understood manual disposing. As the example made a lot of sense I thought it’s not a bad idea to share it online.