Swift3 Xcode 8 beta 4:日历单元与日历组件

Swift3 Xcode 8 beta 4:日历单元与日历组件,swift3,xcode8,xcode8-beta4,Swift3,Xcode8,Xcode8 Beta4,此Swift 3代码一直工作到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) 在Xcode 8 beta 4中,Calendar.Unit似乎被重命名为Calendar.Com

此Swift 3代码一直工作到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)
在Xcode 8 beta 4中,Calendar.Unit似乎被重命名为Calendar.Component

现在这个代码

let calendar = Calendar.current
let anchorComponents = calendar.components([Calendar.Component.day, Calendar.Component.month, Calendar.Component.year, Calendar.Component.hour], from: self)
生成编译器错误
无法将Calendar.Component类型的值转换为NSCalendar.Unit


我是做错了什么还是这是一个bug?

在Xcode 8 beta 4附带的Swift版本中,
组件
已重命名为
日期组件

注意:为了简化调用,可以省略
Calendar.Component
前缀

let anchorComponents = calendar.dateComponents([.day, .month, .year, .hour], from: self)
您收到的错误消息有点误导,我猜编译器正在努力进行类型推断。

Swift 3和Swift 4: 在本例中,您还可以从/到日期准备unitFlags:

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)
let calendar=NSCalendar.current
设置unitFlags=Set([.day、.month、.year、.hour])
让anchorComponents=calendar.dateComponents(unitFlags,from:startDate as Date,to:endDate as Date)

如果在日期扩展中未使用此选项,则必须用适当的日期对象替换
self