У меня есть настраиваемая настройка календаря с использованием UICollectionView, и у меня есть массив, который содержит даты до 30 дней. То, что я пытаюсь сделать, это выяснить, находится ли значение между текущей датой и за 7 дней до нее. Если это мне нужно, чтобы что-то сделать. Я не могу понять, что я делаю неправильно. Вот то, что я до сих пор:проверка, если дата находится между диапазоном
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"MM-dd-yy"];
NSdate *date = [NSDate date];
NSDate *newCurrentDate = [date dateByAddingTimeInterval:+14*24*60*60];
NSDate *sevenDaysBeforeCurrent = [date dateByAddingTimeInterval:-7*24*60*60];
if([[df stringFromDate:[days objectAtIndex:indexPath.item]] compare:[df stringFromDate:newCurrentDate]] == NSOrderedAscending && [[df stringFromDate:[days objectAtIndex:indexPath.item]] compare:[df stringFromDate:sevenDaysBeforeCurrent]] == NSOrderedDescending)
{
UIImage *buttonImage = [UIImage imageNamed:@"dates.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
}
Что она делает это изменить образ каждого дня перед newCurrentDate вместо того, чтобы просто предыдущий 7. Может ли кто-нибудь увидеть, что я делаю неправильно?
Heres инициализация массива:
myDays = [[NSMutableArray alloc] init];
NSCalendar *cal = [NSCalendar autoupdatingCurrentCalendar];
NSDate *today = [NSDate date];
date = [NSDate date];
for (int i = 0; i < 31; i++)
{
NSDateComponents *comps = [[NSDateComponents alloc]init];
[comps setDay:i];
[myDays addObject:[cal dateByAddingComponents:comps toDate:today options:0]];
}
Почему вы создаете строки? Почему бы вам просто не сравнить даты сами? – 2013-02-22 21:54:02
У меня это было изначально [[days objectAtindex: indexPath.item] compare: date], но это дало бы предупреждение, и когда я запустил приложение, он сработает. – bardockyo
, тогда у вас нет 'NSDate' в массиве. – 2013-02-22 22:01:44