【发布时间】:2017-05-23 10:45:03
【问题描述】:
这是一段在早期版本的 swift 中工作的代码。它现在给出一个错误(无法将类型“NSDate”的值转换为强制类型“NSDate.Date”)
extension NSDate {
struct Date {
static let formatterISO8601: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.ISO8601)! as Calendar
formatter.locale = NSLocale.current
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) as TimeZone!
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXX"
return formatter
}()
}
var formattedISO8601: String { return Date.formatterISO8601.string(from: self as Date) }
}
【问题讨论】:
-
关于 Swift 3,你的代码是一团糟。请使用原生 Swift 3 结构
Date(这会导致错误,因为它与您的Date结构冲突!)、Calendar、Locale、TimeZone。 -
这似乎应该是
DateFormatter而不是Date的扩展(除了Date类型已经存在并且您在这里声明一个新类型......)。此外,根据您的部署目标,您可以使用最新版本中引入的NSISO8601DateFormatter类。