«Строка» не может быть преобразована в «Int»

Я пытаюсь создать приложение, которое будет отображать время в формате ЧЧ:ММ:СС.

let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute |                       
.CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay | .CalendarUnitSecond,
fromDate:      date)
let hour = Int(components.hour)
let minutes = Int(components.minute)
let second = Int(components.second)
let col = ":"
let time = (hour+col+minutes+col+second)

В строке «let time = (hour+col+minutes+col+second)» я продолжаю получать сообщение об ошибке «String» не может быть преобразовано в «Int»». Любая помощь будет принята с благодарностью. Спасибо, Ник.


person Nick Greenway    schedule 09.01.2015    source источник
comment
Кроме того, components.hour &co уже имеют тип Int — нет необходимости использовать Int(components.hour).   -  person Nate Cook    schedule 09.01.2015
comment
А в calendar.components(...) нужно указать только те компоненты, которые реально используются (час, минута, секунда).   -  person Martin R    schedule 09.01.2015


Ответы (1)


Вы получаете эту ошибку, потому что пытаетесь добавить (иначе использовать +) экземпляры String и Int вместе.

Вместо этого вы можете использовать интерполяцию строк:

let time = "\(hour):\(minutes):\(second)"

или еще лучше, узнайте о NSDateFormatter, который справляется с этим намного лучше:

let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("HH:mm:ss", options: 0, locale: NSLocale.currentLocale())

let time = timeFormatter.stringFromDate(date)
person Nate Cook    schedule 09.01.2015