Swift snippet #11β€Šβ€”β€ŠRawRepresentable

Monday, 20th March, 2017

You can find its GistΒ here!

The above snippet creates items & itemsCount properties on every enum which has RawValue as Int.

enum City: Int {

case delhi
case bangalore
case mumbai

With the help of above snippet, to get the entire the list of cases we can do City.items or City.itemsCount to get the count πŸš€

Since the advent of Swift, we all have been using Enums a lot lately in our apps! And why not, they are super cool and so powerful. But they have this big limitation where we explicitly need to provide a computed var to list all the items or even items count, something like:

extension City {

static var items: [City] {
return [.delhi, .bangalore, .mumbai]
static var itemsCount: int {
return items.count

Nothing is wrong with the above code but its not awesome πŸ˜“ Everytime we add a new case, we have to update our items, failing of which could lead to bugs πŸ› No one likes them so how about we automate it to make it work out of the box & thus the above snippet πŸ˜„

Big thanks to Nate Cook for making it even more awesome!!!

It has two limitations though πŸ› οΈ:

  1. only applicable for enums having RawValue as Int
  2. not applicable for discontinuous cases nor the ones starting from a value other than 0

If you are wondering about the inception of Swift-Snippets or want to checkout more such snippets, you can find them here 😊