【发布时间】:2010-08-11 03:02:56
【问题描述】:
我只是这样查看 NSCalendar.h 中的代码:
enum {
NSEraCalendarUnit = kCFCalendarUnitEra,
NSYearCalendarUnit = kCFCalendarUnitYear,
NSMonthCalendarUnit = kCFCalendarUnitMonth,
NSDayCalendarUnit = kCFCalendarUnitDay,
NSHourCalendarUnit = kCFCalendarUnitHour,
NSMinuteCalendarUnit = kCFCalendarUnitMinute,
NSSecondCalendarUnit = kCFCalendarUnitSecond,
NSWeekCalendarUnit = kCFCalendarUnitWeek,
NSWeekdayCalendarUnit = kCFCalendarUnitWeekday,
NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal,
};
typedef NSUInteger NSCalendarUnit;
在客户端代码中,我可以调用如下代码:
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dateComponents = [calendar components:unitFlags
fromDate:self
toDate:[NSDate date]
options:0];
我真的不明白这段代码的工作方式。
他们如何定义一个匿名枚举,然后将 NSCalendarUnit 的类型定义为 NSUInteger。以及它们如何在 NSCalendarUnit 和匿名枚举之间建立联系。
在客户端代码中,我可以使用 NSUInteger 执行 OR operation,然后他们(NSCalendar)如何解析它以了解我需要将哪些类型的元素返回给我?
【问题讨论】:
标签: iphone c objective-c enums calendar