gpt4 book ai didi

ios - 从单个单位数组构建 NSCalendarUnit 值

转载 作者:行者123 更新时间:2023-11-29 02:35:44 24 4
gpt4 key购买 nike

我正在尝试计算某个 NSDate 之前的年数/天数/分钟数等。我在做:

NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitWeekOfYear | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:[NSDate date] toDate:date options:0];

我试图让用户选择他们想要查看的组件。假设我有一个包含他们想要的 NSCalendarUnitYearNSCalendarUnitMinute 的数组。我如何将它们连接到 (NSCalendarUnitYear | NSCalendarUnitMinute) 中?

我试过:

NSCalendarUnit *units;
for (NSCalendarUnit *unit in arrayOfUnits) {
units = units | unit;
}

但这不编译。有什么想法吗?

最佳答案

NSCalendarUnit 不是一个对象,它是一个枚举;您不能将一个存储在 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];
}

但我不确定为什么您不只是在从用户那里获得输入时建立最终值;首先似乎没有任何理由将这些东西放在一个数组中。位掩码在更小的空间内包含与数组一样多的信息(这是它存在的全部原因)。

关于ios - 从单个单位数组构建 NSCalendarUnit 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26395907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com