我不正确地使用NSCalendarUnitWeekOfMonth和NSCalendarUnitWeekOfYear吗?

时间:2014-04-29 22:57:34

标签: objective-c macos cocoa nscalendar nsdatecomponents

大家。关于NSCalendar和常量NSCalendarUnitWeekOfMonth(和/或NSCalendarUnitWeekOfYear)的使用,我有一个简单的问题。我想在某个月和一年中获得一个可循环的周数范围。我认为这样做会非常直截了当。然而,当然,它还没有。我究竟做错了什么?这就是我所拥有的:

- (NSRange)rangeOfWeeksInMonth:(NSUInteger)month year:(NSUInteger)year
{
    NSDateComponents *comps = [NSDateComponents new];
    comps.month = month;
    comps.year = year;

    NSDate *date = [self.calendar dateFromComponents:comps];

    return [self.calendar rangeOfUnit:NSCalendarUnitWeekOfMonth // or ... WeekOfYear
                               inUnit:NSCalendarUnitMonth 
                              forDate:date];
}

我想如果我输入month = 4year = 2014,上面的方法会返回如下内容:

=> NSRange: {14, 5}

换句话说,14将是一年中的周数,5将是该月的周数。

使用NSWeekCalendarUnit常量时,上面的示例输出正是我得到的。但是,在检查NSCalendar.h中的常量后,从OS X 10.9开始,NSWeekCalendarUnit已被弃用。 Apple的文档在任何地方都没有提到它,但是当涉及到处理我不确定的东西时,我通常从实际的头文件中获取线索。

无论如何,因为我不想落后于时代,我尝试了NSCalendarUnitWeekOfMonthNSCalendarUnitWeekOfYear,两者的返回范围是{NSNotFound, NSNotFound}。这是怎么回事?任何人都知道为什么Apple没有为这些东西编写文档?

0 个答案:

没有答案