year today name month how from current and actual swift swift2 nscalendar nsdatecomponents

swift - today - ¿Diferencias en la sintaxis de NSDateComponents?



He estado trabajando en una aplicación de reloj en Swift y con Xcode 6.3.2, el siguiente código se construye y funciona muy bien.

// Get current time let date = NSDate() let calendar = NSCalendar.currentCalendar() let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond | .CalendarUnitNanosecond, fromDate: date) let hour = components.hour % 12 let minute = components.minute let second = components.second let nanosecond = components.nanosecond

Sin embargo, cuando cargo el mismo proyecto en Xcode 7.0 beta y no hago ningún cambio, aparece un error en la línea calendar.components.

Could not find member ''CalendarUnitHour''

He mirado la documentación y todas las constantes de NSCalendarUnit están en desuso (en iOS 8.0 dice), pero la descripción del método para el método de componentes todavía dice que las use.

He jugado con otros valores de autocompletado de NSCalendarUnit, pero ninguno produce código de trabajo y no puedo encontrar ningún ejemplo reciente en línea, tal vez porque esto es completamente nuevo.

Alguien sabe la nueva forma correcta de hacer esto?


Swift 2

Los nombres de NSCalendarUnit han cambiado en Swift 2.

Además, ahora tenemos que pasar estos argumentos en un conjunto de opciones, como este:

let components = calendar.components([.Hour, .Minute, .Second, .Nanosecond], fromDate: date)

Swift 3

Muchas cosas han cambiado, de acuerdo con las Pautas de diseño de API Swift .

Sintaxis actualizada:

let date = Date() let calendar = Calendar.current() let components = calendar.components([.hour, .minute, .second, .nanosecond], from: date)

Swift 4

Calendar.current ahora es una propiedad, y .components ha cambiado su nombre a .dateComponents . De lo contrario, es lo mismo que en Swift 3.

let calendar = Calendar.current let components = calendar.dateComponents([.hour, .minute, .second, .nanosecond], from: date)