2014-09-20 56 views
1

我最近更新Xcode到版本6.0,當我這樣做時,我被警告說NSDateComponentsweek方法已被棄用,並且新的weekOfYear方法取代它。我相信這些方法應該會返回一年中的第一週,介於1和52之間。但是,使用weekOfYear獲得的值遠遠超過52.weekOfYear無法正常工作

我用來測試此代碼的代碼如下。有人可以爲我驗證這一點,如果我做錯了什麼,請告訴我那是什麼?

- (void)testWeekOfYearMethod 
{ 
    NSLog(@"Inside testWeekOfYearMethod..."); 

    NSDate *date = [NSDate date]; 

    //NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSCalendar *gregorian = [NSCalendar currentCalendar]; 

    NSDateComponents *weekdayComponents = [gregorian components:NSWeekCalendarUnit fromDate:date]; 

    NSInteger weekOrdinal = [weekdayComponents weekOfYear]; 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"]; 

    NSString *formattedString = [dateFormatter stringFromDate:date]; 
    NSLog(@"In getWeekContainingDate(), Date: %@ has week %ld", formattedString, [[NSNumber numberWithInteger:weekOrdinal] integerValue]); 
} 

回答

4

weekOfYear只是一個訪問NSDateComponents已創建的相應部分。你的例子沒有指定選項NSWeekOfYearCalendarUnit,所以它沒有任何訪問!

它添加到你的選擇,你應該得到你期待的結果:

NSDateComponents *weekdayComponents = [gregorian components:(NSWeekCalendarUnit | NSWeekOfYearCalendarUnit) fromDate:date];