Ios 自XCode版本6.1(6A1052d)更新以来,我收到一个名为“NSCalendar”的成员没有名为“components”的错误

Ios 自XCode版本6.1(6A1052d)更新以来,我收到一个名为“NSCalendar”的成员没有名为“components”的错误,ios,xcode,cocoa-touch,swift,nspredicate,Ios,Xcode,Cocoa Touch,Swift,Nspredicate,这个更新对我来说破坏了很多东西 代码如下: 有什么想法吗 感谢您抽出时间按照Rob的建议展开包装 func convertStartAndExpiryDateFromPickerIntoString(datePicker: UIDatePicker) -> String { let dateFromPicker = datePicker.date let calendar = NSCalendar(calendarIdentifier: NSGregoria

这个更新对我来说破坏了很多东西

代码如下:

有什么想法吗


感谢您抽出时间

按照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)"

    }

定义不再工作。@HotLicks我的坏。没有意识到我没有提供足够的信息。我已相应地编辑了我的文章标题。我无法将此问题的标题与代码协调,但标题中的错误表明您正在尝试访问NSCalendar上的组件?可选择的您必须打开该可选包装,例如使用!强制展开运算符,然后才能使用它引用的对象。这就是问题所在。不知道为什么它一直在为我工作。顺便说一下,我粘贴了错误的代码。Xcode 6.1添加了可失败的初始值设定项,所以NSCalendar。。。现在返回可选的NSCalendar?那必须打开包装。之前,在Xcode 6.0中,它返回一个常规的NSCalendar。
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)"

    }