シナリオ:
私は経費追跡iOSアプリケーションを持っており、経費詳細ビューコントローラーからの経費をカテゴリと金額および日付とともに経費のリストを表示するテーブルビュー(フェッチされた結果コントローラーを含む)に保存しています。私のエンティティ「Money」には、費用または収入のいずれかの親エンティティである日付属性があります。
質問:
基本的に、特定の週、月、または年の経費を分類し、セクションヘッダーのタイトルとして表示します(例:(2012年10月1日から10月7日))。それに応じて経費額と関連情報が表示されます。特定の週。そのビューには2つのボタンがあり、右ボタンを押すと週が1週間ずつ増え(2012年10月1日から10月7日までは2012年10月8日から10月15日が表示されます)、同様に左ボタンで週が減ります。一週間で。
どうすればそれを達成できますか?私は次のコードを試しています-動作しません。
- (void)weekCalculation
{
NSDate *today = [NSDate date]; // present date (current date)
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* comps = [calendar components:NSYearForWeekOfYearCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:today];
[comps setWeekday:1]; // 1: Sunday
firstDateOfTheWeek = [[calendar dateFromComponents:comps] retain];
[comps setWeekday:7]; // 7: Saturday
lastDateOfTheWeek = [[calendar dateFromComponents:comps] retain];
NSLog(@" first date of week =%@", firstDateOfTheWeek);
NSLog(@" last date of week =%@", lastDateOfTheWeek);
firstDateOfWeek = [dateFormatter stringFromDate:firstDateOfTheWeek];
lastDateOfWeek = [dateFormatter stringFromDate:lastDateOfTheWeek];
}
日付をインクリメントするためのコード-
- (IBAction)showNextDates:(id)sender
{
int addDaysCount = 7;
NSDateComponents *dateComponents = [[[NSDateComponents alloc] init] autorelease];
[dateComponents setDay:addDaysCount];
NSDate *newDate1 = [[NSCalendar currentCalendar]
dateByAddingComponents:dateComponents
toDate:firstDateOfTheWeek options:0];
NSDate *newDate2 = [[NSCalendar currentCalendar]
dateByAddingComponents:dateComponents
toDate:lastDateOfTheWeek options:0];
NSLog(@" new dates =%@ %@", newDate1, newDate2);
}
週がこのように表示され(2012年11月4日から2012年11月10日)、インクリメントボタンを押すと、コンソールに日付が2012年11月11日と2012年11月17日に変更されますが、インクリメントボタンを押すと繰り返しになりますが、同じ日付が再び表示されます(2012年11月11日と2012年11月17日)。
ここで私を助けてください。