ios - hours - Xcode 8 y Swift 3 NSCalendar
swift add time to date (2)
Implementé mi proyecto de reloj en Swift y ahora estoy migrando a Swift 3 debido a Xcode 8. Dejo que Xcode 8 cambie el código fuente a Swift 3. Sin embargo, hay errores en el código y no puedo resolverlo.
let unitFlags: Calendar = [.hour, .firstWeekday, .monthSymbols, .year, .minute, .firstWeekday]
var calendar = NSCalendar.current
calendar.timeZone = NSTimeZone(identifier: "UTC")!
let components = (calendar as NSCalendar).components(unitFlags, from: reservationDate)
Xcode da error en estas líneas y no puedo entender el problema.
ERROR: tipo contextual ''Calendario'' no se puede usar con literal de matriz
ERROR: las etiquetas de argumento ''(identificador :)'' no coinciden con ninguna sobrecarga disponible
ERROR: No se puede convertir el valor del tipo ''Calendario'' al tipo de argumento esperado ''NSCalendar.Unit''
Cambiar el tipo de unidadFlags para establecer
En primer lugar, ni NSCalendarUnit
en Swift 2 ni Calendar.Component
en Swift 3 contienen los componentes firstWeekday
y monthSymbols
.
En Swift 3, el equivalente de tu código es
let unitFlags = Set<Calendar.Component>([.hour, .year, .minute])
var calendar = Calendar.current
calendar.timeZone = TimeZone(identifier: "UTC")!
let components = calendar.dateComponents(unitFlags, from: reservationDate)