iPhone - NSWeekCalendarUnit和NSWeekdayCalendarUnit有什么区别?

时间:2011-09-17 11:43:31

标签: iphone

我正在尝试使用这些值设置UILocalNotification的repeatingInterval,但是,像往常一样,Apple文档模糊不清。

任何线索?

感谢。

3 个答案:

答案 0 :(得分:4)

或许关于这个问题看看this blog I just found

AFAIK,NSCalendarUnits主要用于将日期或时间间隔拆分为日期组件(NSDateComponents),以提取日期的工作日,日期的年份,时间的小时组件等等。

在此背景下:

  • 日期的NSWeekCalendarUnit对应于当年的周指数(从第1周到第52周 - 或53周的53周)
  • NSWeekdayCalendarUnit对应于一周中的一天(从星期一到太阳)
  • NSDayCalendarUnit对应于一年中的某一天(从1到365)

当使用带有repeatingInterval的NSCalendarUnit类型时,当相应的单位发生变化时,将触发UILocalNotification:

  • NSWeekCalendarUnit将每周(每7天)触发一次通知
  • NSWeekdayCalendarUnit将触发“每个工作日”的通知,这与NSDayCalendarUnit对应的内容对应于repeatInterval上下文中的“每一天”。

答案 1 :(得分:2)

Cocoa和Objective-C可以轻松敲定快速测试程序以查看结果。如果您不确定文档,可以随时自行检查。我有一个构建基础命令行工具的项目,我只需将这些片段输入main.m并记录它们以查看API返回的内容。

例如,我刚刚运行了这个:

unsigned flags = NSWeekCalendarUnit;
NSDateComponents *components = [[NSCalendar currentCalendar] components:flags fromDate:[NSDate date]];
NSLog(@"Week: %ld", [components week]);

flags = NSWeekdayCalendarUnit;
components = [[NSCalendar currentCalendar] components:flags fromDate:[NSDate date]];
NSLog(@"WeekDay: %ld", [components weekday]);

得到了

Week: 37
Weekday: 7

很快就会看到WeekCalendar单位将其作为一年中的第37周,而WeekDay说这(今天是星期六)是一周的第7天('我知道公历是星期日为第1天)

答案 2 :(得分:0)

NSWeekdayCalendarUnit意味着每个星期日的通知都会出现。

NSWeekCalendarUnit表示您的通知每到第7天