在Swift 2.0中将NSCalendarUnit与OR(管道)组合时出错

在Swift 2.0中将NSCalendarUnit与OR(管道)组合时出错,swift,nsdateformatter,swift2,nscalendar,nsdatecomponents,Swift,Nsdateformatter,Swift2,Nscalendar,Nsdatecomponents,我有一些在Swift 2.0中被破解的代码: let formatter = NSDateComponentsFormatter() formatter.allowedUnits = NSCalendarUnit.Year formatter.allowedUnits |= .Month formatter.allowedUnits |= .WeekOfMonth formatter.allowedUnits |= .Day formatter.allowedUnits |= .Hour fo

我有一些在Swift 2.0中被破解的代码:

let formatter = NSDateComponentsFormatter()
formatter.allowedUnits = NSCalendarUnit.Year
formatter.allowedUnits |= .Month
formatter.allowedUnits |= .WeekOfMonth 
formatter.allowedUnits |= .Day
formatter.allowedUnits |= .Hour
formatter.allowedUnits |= .Minute
我发现错误
二进制运算符“|=”不能应用于“NSCalenderUnit”操作数


做这类事情的新方法是什么?

NSCalendarUnit
是Swift 2中的
选项设置类型,而不是
RawOptionSetType
。这意味着你不能再对它进行逻辑或逻辑分析了。相反,您可以使用它的数组文字表示:

formatter.allowedUnits = [.Year, .Month, .WeekOfMonth, .Day, .Hour, .Minute]
本质上是与相同的问题(和解决方案)。