Differenze nella syntax NSDateComponents?

Ho lavorato a un’app di clock in Swift e con Xcode 6.3.2 il codice seguente è stato creato e funziona perfettamente.

// 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 

Tuttavia, quando carico lo stesso progetto su Xcode 7.0 beta e non apporto modifiche di alcun tipo, ricevo un errore sulla linea calendar.components.

 Could not find member 'CalendarUnitHour' 

Ho esaminato la documentazione e tutte le costanti NSCalendarUnit sono deprecate (in iOS 8.0, si dice), ma la descrizione del metodo per i componenti dice ancora di usarle.

Ho giocato con altri valori di completamento automatico NSCalendarUnit ma nessuno produce codice funzionante e non riesco a trovare alcun esempio recente online, forse perché è nuovo di zecca.

Qualcuno conosce il nuovo modo corretto per farlo?

Swift 2

I nomi NSCalendarUnit sono cambiati in Swift 2.

Inoltre, ora dobbiamo passare questi argomenti in un OptionSet, come questo:

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

Swift 3

Molte cose sono cambiate, secondo le Linee guida di progettazione dell’API Swift .

Sintassi aggiornata:

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

Swift 4

Calendar.current è ora una proprietà e .components è stato rinominato in .dateComponents . Altrimenti è lo stesso di Swift 3.

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