【问题标题】:I'm getting an 'NSCalendar?' does not have a member named 'components' error since XCode Version 6.1 (6A1052d) update我得到一个“NSCalendar?”自 XCode 版本 6.1 (6A1052d) 更新以来没有名为“组件”的成员错误
【发布时间】:2014-11-28 13:42:40
【问题描述】:

此更新对我来说破坏了几件事。

代码如下:

func convertStartAndExpiryDateFromPickerIntoString(datePicker: UIDatePicker) -> String {
    let dateFromPicker = datePicker.date
    let calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
    let unitFlags = NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit
    let components = calendar.components(unitFlags, fromDate: dateFromPicker)
    return "\(months.objectAtIndex(components.month)) \(components.day)"

}

有什么想法吗?

感谢您的宝贵时间

【问题讨论】:

  • 定义“不再工作”。
  • @HotLicks 我的错。没有意识到我没有提供足够的信息。我已经相应地编辑了我的帖子标题。
  • 我无法将这个问题的标题与代码相协调,但您标题中的错误表明您正在尝试访问 components 上的 NSCalendar? 可选。在使用它引用的对象之前,您必须解开该可选的(例如使用! 强制解包运算符)。
  • 这就是问题所在。不知道为什么它一直在为我工作。顺便说一句,我粘贴了错误的代码。
  • Xcode 6.1 添加了可失败的初始化程序,因此NSCalendar(...) 现在返回一个必须解包的可选NSCalendar?。之前,在 Xcode 6.0 中它返回一个常规的 NSCalendar

标签: ios xcode cocoa-touch swift nspredicate


【解决方案1】:

按照 Rob 的建议展开工作。

func convertStartAndExpiryDateFromPickerIntoString(datePicker: UIDatePicker) -> String {
        let dateFromPicker = datePicker.date
        let calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!
        let unitFlags = NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit
        let components = calendar.components(unitFlags, fromDate: dateFromPicker)
        return "\(months.objectAtIndex(components.month)) \(components.day)"

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多