0

Event Kit のようなパラメータ「unitFlags」を取るメソッドを作成したいと思います

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date.

前の方法と以下に示す方法では、unitflags に複数の値を設定できます。

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *comps = [gregorian components:unitFlags fromDate:date];

これらのメソッドは を受け取ることNSUIntegerがわかりますが、メソッドのカスタム実装でユニット フラグを設定したら、複数の値セットをどのように決定すればよいでしょうか。

4

3 に答える 3

1

キーは、渡すことができる列挙値の定義にあります ( NSYearCalendarUnit):

typedef CF_OPTIONS(CFOptionFlags, CFCalendarUnit) {
kCFCalendarUnitEra = (1UL << 1),
kCFCalendarUnitYear = (1UL << 2),
kCFCalendarUnitMonth = (1UL << 3),
}

独自の列挙を定義する必要があります。次に、クラス内で、指定された値をテストできます。

CFCalendarUnit testValue = ...;

if ((testValue & kCFCalendarUnitEra) == kCFCalendarUnitEra) {
    // it's an era
}
if ((testValue & kCFCalendarUnitYear) == kCFCalendarUnitYear) {
    // it's a year
}
于 2013-05-10T22:05:15.547 に答える