Окончание слов в зависимости от числа

snippet
swift

#1

Бывает необходимо показать пользователю некоторое число с названием и при этом все должно быть написано с правильным окончанием.
Например: 5 дней назад, 23 штуки, 41 рубль.

extension Int {
     func days() -> String {
         var dayString: String!
         if "1".containsString("\(self % 10)")      {dayString = "день"}
         if "234".containsString("\(self % 10)")    {dayString = "дня" }
         if "567890".containsString("\(self % 10)") {dayString = "дней"}
         if 11...14 ~= self % 100                   {dayString = "дней"}
    return "\(self) " + dayString
    }
}

Используем например так:

let day = 27
let daysAgo = day.days() + " назад" // -> 27 дней назад