Dieser Swift 3 Code funktionierte bis 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)
In Xcode 8 Beta 4 scheint Calendar.Unit
In Calendar.Component
Umbenannt worden zu sein.
Nun dieser Code
let calendar = Calendar.current
let anchorComponents = calendar.components([Calendar.Component.day, Calendar.Component.month, Calendar.Component.year, Calendar.Component.hour], from: self)
erzeugt den Compilerfehler cannot convert value of type Calendar.Component to NSCalendar.Unit
Mache ich etwas falsch oder ist das ein Fehler?
In der mit Xcode 8 Beta 4 ausgelieferten Swift) - Version wurde components
in dateComponents
umbenannt.
Hinweis: Um den Aufruf zu vereinfachen, können Sie das Präfix Calendar.Component
Weglassen.
let anchorComponents = calendar.dateComponents([.day, .month, .year, .hour], from: self)
Die Fehlermeldung, die Sie erhalten haben, ist etwas irreführend. Ich denke, der Compiler hatte Probleme mit der Typinferenz.
In diesem Beispiel könnten Sie auch Ihre unitFlags von/bis Datum vorbereiten:
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)