Swift 2.0日历组件错误

25

嗨,我在 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个回答

49

从Swift 2开始,像NSCalendarOptions这样的NS_OPTIONS被映射到Swift中作为OptionSetType,它提供了一种类似于集合的接口。特别是,现在可以将“无选项”指定为[]而不是nil

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

更多信息请参阅Swift 2.0 - Binary Operator "|" cannot be applied to two UIUserNotificationType operands以及最近添加的如何在Swift中创建NS_OPTIONS样式的位掩码枚举?的答案。


1
你不能将nil作为选项参数传递。请使用空选项集代替:
let components = cal.components(unit, fromDate: calcDesp!, toDate: calHoy!, options: [])

你还需要确保取消 calcDesp 和 calHoy 的包装。

1

你也可以像以下这样使用rawValue

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接