Swift3 Xcode 8 beta 4:日历单元与日历组件
此Swift 3代码一直工作到XCode 8 beta 3: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
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
。