我得到一个“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 获取现在和年底之间的日期差异给出零月份