zka*_*arj 16 nscalendar nsdatecomponents swift swift2
我一直在使用Swift中的时钟应用程序和Xcode 6.3.2以下代码构建并运行得很好.
// Get current time
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond | .CalendarUnitNanosecond, fromDate: date)
let hour = components.hour % 12
let minute = components.minute
let second = components.second
let nanosecond = components.nanosecond
Run Code Online (Sandbox Code Playgroud)
但是,当我在Xcode 7.0 beta中加载相同的项目并且不做任何更改时,我在calendar.components行上出现错误.
Could not find member 'CalendarUnitHour'
Run Code Online (Sandbox Code Playgroud)
我查看了文档,并且不推荐使用所有NSCalendarUnit常量(在iOS 8.0中说),但组件方法的方法描述仍然表示要使用它们.
我已经玩过其他NSCalendarUnit自动完成值,但没有产生工作代码,我在网上找不到任何最近的例子,也许是因为这是全新的.
有人知道新的正确方法吗?
aya*_*aio 32
斯威夫特2
NSCalendarUnitSwift 2中的名称已更改.
此外,现在我们必须在OptionSet中传递这些参数,如下所示:
let components = calendar.components([.Hour, .Minute, .Second, .Nanosecond], fromDate: date)
Run Code Online (Sandbox Code Playgroud)
斯威夫特3
根据Swift API设计指南,许多事情都发生了变化.
更新语法:
let date = Date()
let calendar = Calendar.current()
let components = calendar.components([.hour, .minute, .second, .nanosecond], from: date)
Run Code Online (Sandbox Code Playgroud)
斯威夫特4
Calendar.current现在是一个属性,并.components已重命名为.dateComponents.否则它与Swift 3中的相同.
let calendar = Calendar.current
let components = calendar.dateComponents([.hour, .minute, .second, .nanosecond], from: date)
Run Code Online (Sandbox Code Playgroud)