Breaking labeled scopes

:  ~ 2 min read

break is used to exit the current scope, for example a for loop:

for i in 1...10 {
    guard i < 9 else { break }
    // Code here.
}

But what if we have nested loops, and we want to break a specific one? Swift has us covered, with labels:

outer: for i in 1...10 {
    inner: for j in 1...10 {
        guard i < 9 else { break outer }
        guard j < 8 else { break inner  […]

Continue reading →

Assign if not nil; if nil, then assign

:  ~ 1 min read

I always found Ruby's ||= operator interesting, which says (roughly) assign the right hand side to the left hand side, if the latter is nil (or false). But what about assigning the right hand side to the left hand side, if the former is not nil?

Here's my take on these two, with rather intuitive operators (if you ask me, of course):

infix operator […]

Continue reading →

A new year is starting soon

:  ~ 25 sec read

My last post for 2016 won't be a technical one; I'd just like to wish everyone a wonderful 2017. I hope you will be healthy, happy, and that your plans and wishes will all work out.

Let's make the next year a great one!

Vertical scrolling parallax

:  ~ 6 min read

If you're using WhatsApp, you probably saw the images have a small parallax effect, in the opposite scrolling direction. This gives the impression that the image is on a deeper level, and the "image container" is a window: if you climb on a chair, it's as if you lowered the window (you scrolled down), and now you can see more of the […]


Continue reading →

Thinking outside of the box

:  ~ 2 min read

Recently, I stumbled upon a small problem: we have a product details controller which calls a factory method that creates a view with a few UITextViews that detect a website, a phone, and an address, respectively, but the latter was not working reliably. Said method only needs the product object to be passed in to properly create the view.

One simple […]


Continue reading →

Swift mirroring

:  ~ 2 min read

I recently added some tests to LTHRadioButton, and I gave mirroring a try, something I always wanted to do. What's mirroring? As Apple puts it, it's a representation of the sub-structure and optional "display style" of any arbitrary subject instance.

Benedikt has a really nice and comprehensive post about it, so I'll just very […]


Continue reading →

Slightly easier Core Data manipulation

:  ~ 3 min read

Working with Core Data is getting easier and easier, but there are a couple of improvements I'd like to talk about, and I'd like to start with the auto-generated, generic NSFetchRequest. It's a step in the right direction, but the problem is that trying to use it without explicitly declaring its type won't work:

let request = ProductModel.fetchRequest( […]

Continue reading →

LTHRadioButton

:  ~ 2 min read

I was in need of a radio button recently, and it had to be designed like a Google Material Design radio button. Nothing too fancy, but I wanted to spice it up a little bit, by adding a nice animation. The idea was to:


Continue reading →

Adding string attributes slightly easier

:  ~ 2 min read

Say we have a composed string that looks like this:

let date = "22 July, 2017"
let value = "€ 148"
let quantity = 5
let string = "\(quantity) of your items, in value of \(value), have been delivered on \(date)."
// 5 of your items, in value of € 148, have been delivered on 22 July, 2017.

It would be nice to emphasise the […]


Continue reading →

Combining protocols

:  ~ 2 min read

Let's say we have a controller that can fetch some data. What would this imply? A loading spinner, the fetching of the data and the update of the UI. We can create a protocol for this, maybe Fetchable:

protocol Fetchable {
  func showSpinner()
  func fetchData()
  func updateUI()
}
[...]
class Controller: UIViewController, Fetchable {
  // showSpinner,  […]

Continue reading →