swift3 - Xcode 8 beta 4: Calendar.Unit vs Calendar.Component
xcode8 xcode8-beta4 (2)
Swift 3 y Swift 4:
En este ejemplo, también podría preparar sus UnitFlags desde / hasta la fecha:
let calendar = NSCalendar.current
let unitFlags = Set<Calendar.Component>([.day, .month, .year, .hour])
let anchorComponents = calendar.dateComponents(unitFlags, from: startDate as Date, to: endDate as Date)
Este código Swift 3 funcionó hasta XCode 8 beta 3:
let calendar = Calendar.current
let anchorComponents = calendar.components([Calendar.Unit.day, Calendar.Unit.month, Calendar.Unit.year, Calendar.Unit.hour], from: self)
En Xcode 8 beta 4 Calendar.Unit
parece ser renombrado a Calendar.Component
.
Ahora este codigo
let calendar = Calendar.current
let anchorComponents = calendar.components([Calendar.Component.day, Calendar.Component.month, Calendar.Component.year, Calendar.Component.hour], from: self)
produce el error del compilador cannot convert value of type Calendar.Component to NSCalendar.Unit
¿Estoy haciendo algo mal o es un error?
En la versión Swift incluida con Xcode 8 beta 4, los components
han sido renombrados a dateComponents
.
Nota: para simplificar la llamada, puede omitir el prefijo Calendar.Component
.
let anchorComponents = calendar.dateComponents([.day, .month, .year, .hour], from: self)
El mensaje de error que recibiste es un poco engañoso, supongo que el compilador estaba teniendo problemas con la inferencia de tipos.