【问题标题】:Xcode 8 and Swift 3 NSCalendarXcode 8 和 Swift 3 NSCalendar
【发布时间】:2016-12-19 15:24:04
【问题描述】:

我在 Swift 中实现了我的 watch 项目,现在由于 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 在这些行中出现错误,我无法理解问题所在。

错误:上下文类型“日历”不能与数组文字一起使用

错误:参数标签“(标识符:)”不匹配任何可用的 重载

错误:无法将“日历”类型的值转换为预期参数 输入“NSCalendar.Unit”

【问题讨论】:

    标签: ios swift swift2 swift3


    【解决方案1】:

    将unitFlags的类型改为Set

    【讨论】:

      【解决方案2】:

      首先,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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-08
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多