2013-03-04 4 views
0

Im пытается написать метод, который будет работать для цикла проверки, если дата до сегодняшнего дня, и если да, то она должна быть увеличена с помощью метода NSDateComponentДобавление NSDateComponents в цикле

проверить если дата до сегодняшнего дня:

- (BOOL) isDatePassedToday:(NSDate *)recurringDate 
{ 
    if ([recurringDate compare:[NSDate date]] == NSOrderedDescending) 
     return NO; 

    return YES; 
} 

Логика как мне нужна для цикла работы:

-(NSDate *)calculateRecurringReminder:(NSDate *)startDate using:(NSDateComponents*)doItAgainComponents 
{ 
    NSDate *recurringDate = [[NSDate alloc]init]; 

    recurringDate = [[NSCalendar currentCalendar] dateByAddingComponents:doItAgainComponents toDate:recurringDate options:0]; 

    // The loop to add components 
    for ([self isDatePassedToday:recurringDate]; [self isDatePassedToday:recurringDate] == YES; doItAgainComponents) 
    { 

     recurringDate = [[NSCalendar currentCalendar] dateByAddingComponents:doItAgainComponents toDate:recurringDate options:0]; 

    } 

    return recurringDate; 
} 
+1

так что вы ожидаете от нас? –

+1

Итак, каково ваше ожидаемое поведение для цикла и что он на самом деле делает? – varzan

+0

Я просто хочу, чтобы цикл постоянно добавлял doItAgainComponents к recurringDate до тех пор, пока он не будет принят сегодня. – justMike

ответ

0

Возможно, вы имеете в виду это:

-(NSDate *)calculateRecurringReminder:(NSDate *)startDate using:(NSDateComponents*)doItAgainComponents { 
    NSDate *recurringDate = startDate; 

    while (![self isDatePassedToday:recurringDate]) { 
     recurringDate = [[NSCalendar currentCalendar] dateByAddingComponents:doItAgainComponents toDate:recurringDate options:0]; 
    } 

    return recurringDate; 
} 
+0

Хм, хотя это, похоже, именно то, что мне нужно, оно блокирует мой пользовательский интерфейс и, похоже, не завершается даже при небольших вычислениях. Какие-либо предложения? – justMike

+0

Возможно, это происходит в бесконечном цикле. Запустите это в отладчике и посмотрите, почему. Возможно, 'recurringDate' не увеличивается, как ожидалось, или' isDatePassedToday' никогда не возвращает 'YES'. – rmaddy

+0

Извините, я не думаю прямо, и да, вы правы, он идет в бесконечный цикл. Я думаю, что знаю проблему, но на мой оригинальный вопрос ответили, так что спасибо вам большое. – justMike

Смежные вопросы