我试图计算直到确定的年/天/分钟/等的数量NSDate
。我在做:
NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitWeekOfYear | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:[NSDate date] toDate:date options:0];
我试图允许用户选择他们想要查看的组件。假设我有一个包含他们想要NSCalendarUnitYear
和的数组NSCalendarUnitMinute
。我如何将它们连接到中(NSCalendarUnitYear | NSCalendarUnitMinute)
?
我试过了:
NSCalendarUnit *units;
for (NSCalendarUnit *unit in arrayOfUnits) {
units = units | unit;
}
但这无法编译。有任何想法吗?
NSCalendarUnit
不是对象,这是一个enum
; 您不能将一个存储在NSArray
。您可以将其包装在NSNumber
存储在数组中的中,但是在尝试进行按位运算之前,必须先将其拆开。
看起来像这样:
NSNumber * userUnitNumber = @(userChosenCalendarUnit);
[arrayOfUnits addObject:calUnitNumber];
// Initialize this to zero or it will contain garbage
// and you'll get bizarre results!
NSCalendarUnit finalUnits = 0;
for( NSNumber * unitNumber in arrayOfUnits ){
// The datatype for an NSCalendarUnit is NSUInteger
finalUnits |= [unitNumber unsignedIntegerValue];
}
但是我不确定为什么您不仅仅在从用户那里得到输入时就建立最终的价值。似乎没有任何理由首先将这些内容保留在数组中。位掩码包含的信息与数组在更少空间中的信息一样多(这是其存在的全部原因)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句