【问题标题】:change code from swift to swift 2.0 [duplicate]将代码从 swift 更改为 swift 2.0 [重复]
【发布时间】:2015-07-31 19:45:36
【问题描述】:

我想将我的 swift 代码更改为 swift 2.0 我希望你能帮助我。

                let calendar = NSCalendar.currentCalendar()
            let components = calendar.components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay , fromDate:  notification.fireDate!)
            var gregorian:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
            let unit: NSCalendarUnit = .CalendarUnitHour | .CalendarUnitMinute
            var comps:NSDateComponents = gregorian.components(unit, fromDate: timepicker.date)


            comps.setValue(components.day, forComponent: NSCalendarUnit.CalendarUnitDay)
            comps.setValue(components.month, forComponent: NSCalendarUnit.CalendarUnitMonth)
            comps.setValue(components.year, forComponent: NSCalendarUnit.CalendarUnitYear)
            comps.setValue(comps.hour, forComponent: NSCalendarUnit.CalendarUnitHour)
            comps.setValue(comps.minute, forComponent: NSCalendarUnit.CalendarUnitMinute)
            var NewFiredate : NSDate = gregorian.dateFromComponents(comps)!

在我的这部分代码中,我收到以下错误:

  • 找不到成员“CalendarUnitYear”
  • 找不到成员“CalendarUnitHour”
  • “NSCalendarUnit.Type”没有名为“CalendarUnitHour”的成员
  • “NSCalendarUnit.Type”没有名为“CalendarUnitMinute”的成员

非常感谢:)

【问题讨论】:

    标签: swift swift2


    【解决方案1】:

    您可以使用下面的代码,基本上我用新的 OptionSetType 语法替换了枚举,并进行了一些小的更改。 NSCalendarUnit OptionSetType 有这些你可以使用的静态类型,

    static var Era: NSCalendarUnit { get }
    static var Year: NSCalendarUnit { get }
    static var Month: NSCalendarUnit { get }
    static var Day: NSCalendarUnit { get }
    static var Hour: NSCalendarUnit { get }
    static var Minute: NSCalendarUnit { get }
    static var Second: NSCalendarUnit { get }
    static var Weekday: NSCalendarUnit { get }
    static var WeekdayOrdinal: NSCalendarUnit { get }
    static var Quarter: NSCalendarUnit { get }
    static var WeekOfMonth: NSCalendarUnit { get }
    static var WeekOfYear: NSCalendarUnit { get }
    static var YearForWeekOfYear: NSCalendarUnit { get }
    static var Nanosecond: NSCalendarUnit { get }
    static var Calendar: NSCalendarUnit { get }
    static var TimeZone: NSCalendarUnit { get }
    

    所以,你的新代码应该是这样的,

    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Year, .Month, .Day] , fromDate:  notification.fireDate!)
    var gregorian:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
    let unit: NSCalendarUnit = [.Hour, .Minute]
    var comps:NSDateComponents = gregorian.components(unit, fromDate: timepicker.date)
    
    
    comps.setValue(components.day, forComponent:.Day)
    comps.setValue(components.month, forComponent:.Month)
    comps.setValue(components.year, forComponent:.Year)
    comps.setValue(comps.hour, forComponent:.Hour)
    comps.setValue(comps.minute, forComponent:.Minute)
    var NewFiredate : NSDate = gregorian.dateFromComponents(comps)!
    

    【讨论】:

    • 谢谢。但 xcode 告诉我,我已将第一行更改为 _ = NSCalendarUnit.Year
    • 哦,是的,删除第一行,我会编辑它。
    • _ 表示您没有使用该变量,因此编译器希望将其设置为任何变量名称。因为,我们没有使用,所以名称是什么并不重要,所以 xcode 尝试将其命名为 _。我现在删除了这条线。
    • 好的,但是“_ =”是什么意思?我也必须在我的代码的另一部分设置它
    • 这只是意味着如果您不关心值是什么并且不想进一步使用它,您只需分配它_。所以,它就像对象的 AnyObject,任何名称未定义的名称或任何你可以说的东西。
    猜你喜欢
    • 2018-11-18
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    相关资源
    最近更新 更多