This is a feature of Swift Enumerations I did not know about. Clever.
Often values like status codes are tiered like HTTP status codes which are grouped together within a range and incremented by one for most values in that group. Reducing code which must be typed is a good practice with Swift and eliminating the need to set every value in an enum definition would be a great way to eliminate details which can be derived by convention.
For this example the HTTP Status Codes are used. Tiers are grouped at increments of 100 and most values within one of the previous before the next level. If the value is not specified it would simply be one more than the previous value.
A common practice with enum types is to start with defining the first value with 0 and incrementing each value by one for the rest of the values.
@makeitTim, I would probably prefer having a HTTPURLResponseError, with a required value for HTTPURLResponse itself. Since this enum is mapped to raw values, you don't need to extend HTTPURLResponse.statusCode to create an easy switch construct using the enum names instead of using the int values themself.