A lot of time has passed since this question was last asked (in both IOS and in swift), so I thought it would be appropriate to re-ask it to get a modern perspectiv