obj c の初心者として、私が取り組んでいるカレンダー アプリで問題が発生しました (表面上はネイティブ アプリとほぼ同じです)。夏時間のときに間違った日付 (1 日前) を選択するボタンに問題がありました。解決策を検索しましたが、何も見つかりませんでした。次のコードを思いつきました。経験豊富なコーダーが、これを行うためのよりきちんとした、またはより効率的な方法があるかどうか教えてもらえますか. このコードのチャンクは、私には少しぎこちなく感じられます。建設的な考えをいただければ幸いです。
- (IBAction)dateButtonPressed:(id)sender; {
NSDateComponents *offset = [NSDateComponents new];
offset.day = [self.dayButtons indexOfObject:sender];
NSDate *selectedDate = [self.calendar dateByAddingComponents:offset toDate:self.beginningDate options:0];
NSTimeZone *currentZone = [NSTimeZone localTimeZone];
if ([currentZone isDaylightSavingTimeForDate:selectedDate]) {
offset.hour = +1;
selectedDate = [self.calendar dateByAddingComponents:offset toDate:self.beginningDate options:0];
}
self.calendarView.selectedDate = selectedDate;
NSLog(@"pressed %@",selectedDate);
}