Swift 2.0日历组件错误

时间:2015-06-11 00:02:56

标签: ios swift nscalendar

嗨,我在swift 2.0中收到此错误

无法使用类型'(NSCalendarUnit,fromDate:NSDate?,toDate:NSDate ?, options:nil)'的参数列表调用'components',

var hoy = dataFormatter.stringFromDate(NSDate())
        var despues = dataFormatter.stringFromDate(fecha)
        var calHoy = dataFormatter.dateFromString(hoy)
        var calcDesp = dataFormatter.dateFromString(despues)
        let cal = NSCalendar.currentCalendar()
        let unit:NSCalendarUnit = .Day
        let components = cal.components(unit, fromDate: calcDesp, toDate: calHoy, options: nil) 

3 个答案:

答案 0 :(得分:49)

从Swift 2开始,NS_OPTIONS(例如NSCalendarOptions)作为OptionSetType映射到Swift 它提供了类似集合的界面。特别是,"没有选项" 现在可以指定为[]而不是nil

let components = cal.components(unit, fromDate: calcDesp!, toDate: calHoy!,
                               options: []) 

另见Swift 2.0 - Binary Operator "|" cannot be applied to two UIUserNotificationType operands 以及最近添加的How to create NS_OPTIONS-style bitmask enumerations in Swift?答案以获取更多信息。

答案 1 :(得分:1)

你不能传递nil作为你的选项参数。改为使用空选项集:

let components = cal.components(unit, fromDate: calcDesp!, toDate: calHoy!, options: [])

您还必须确保打开calcDesp和calHoy。

答案 2 :(得分:1)

您还可以使用rawValue,如下所示:

cal.components(unit, fromDate: calcDesp!, toDate: calHoy!, options: NSCalendarOptions(rawValue: 0))