我得到一个“NSCalendar?”自 XCode 版本 6.1 (6A1052d) 更新以来没有名为“组件”的成员错误

Posted

技术标签:

【中文标题】我得到一个“NSCalendar?”自 XCode 版本 6.1 (6A1052d) 更新以来没有名为“组件”的成员错误【英文标题】:I'm getting an 'NSCalendar?' does not have a member named 'components' error since XCode Version 6.1 (6A1052d) update 【发布时间】: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 【参考方案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)"

    

【讨论】:

以上是关于我得到一个“NSCalendar?”自 XCode 版本 6.1 (6A1052d) 更新以来没有名为“组件”的成员错误的主要内容,如果未能解决你的问题,请参考以下文章

NSCalendar 获取现在和年底之间的日期差异给出零月份

iOS NSCalendar 崩溃 - 参考问题?

如何在 Swift Xcode 中创建自定义导航栏?

NSCalendar 一个月内的最大天数

使用 IB / Xcode 4.5.1 和 iOS Simulator 6.0 自定义 UIView 操作方法

NSDate/NSCalendar 问题