Xcode 8和Swift 3 NSCalendar

16

我使用Swift编写了我的手表项目,现在由于需要使用Xcode 8,我要将其迁移到Swift 3。我让Xcode 8将源代码更改为Swift 3。 但是,代码中出现了错误,我无法解决。

let unitFlags: Calendar = [.hour, .firstWeekday, .monthSymbols, .year, .minute, .firstWeekday]

var calendar = NSCalendar.current
calendar.timeZone = NSTimeZone(identifier: "UTC")!
let components = (calendar as NSCalendar).components(unitFlags, from: reservationDate)

Xcode在这些行中出现错误,我无法理解问题所在。

错误:语境类型 'Calendar' 不能与数组字面量一起使用

错误:参数标签 '(identifier:)' 与任何可用的重载不匹配

错误:无法将类型为 'Calendar' 的值转换为预期的参数类型 'NSCalendar.Unit'

2个回答

36

首先,Swift 2 中的 NSCalendarUnit 和 Swift 3 中的 Calendar.Component 都不包含组件 firstWeekdaymonthSymbols

在 Swift 3 中,您代码的等效写法是:

let unitFlags = Set<Calendar.Component>([.hour, .year, .minute])
var calendar = Calendar.current
calendar.timeZone = TimeZone(identifier: "UTC")!
let components = calendar.dateComponents(unitFlags, from: reservationDate)

0

将unitFlags的类型更改为Set


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接