iPhone dev: попытка сравнить текущую дату и дату элемента массива - PullRequest
1 голос
/ 02 апреля 2011

У меня есть рабочий UITable с разделами.UITable получает свои данные из внешнего XML-файла, это также хорошо работает.Но я хочу, чтобы XMLparser исключал строки, где дата старше, чем сегодня.Я думал сделать это в тот момент, когда мой файл добавляет элемент в мой массив.Но когда я добавляю этот код, я получаю ошибку.Пожалуйста, помогите мне в этом!

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
   NSDate* date = [NSDate date];
   NSDateFormatter* nsformatter = [[[NSDateFormatter alloc] init] autorelease];
   [nsformatter setDateFormat:@"yyyy-MM-dd"];
   NSDate* stageDate = [XMLParser dateFromString:aStage.end];

   if([elementName isEqualToString:@"Stages"])
   {
       return;
   }
   if([elementName isEqualToString:@"Month"])
   {
   [appDelegate.stages addObject:aMonth];
       [aMonth release];
   aMonth = nil;
   }
   if([elementName isEqualToString:@"Stage"])
   {
       /* THIS IS THE PART I ADDED BUT GIVES THE ERROR
       if(stageDate < date)
       {
       */
           [aMonth.stagesPerMonth addObject:aStage];
           [aStage release];
           aStage = nil;
       /*
       }
       */
   }
   else
   {
       [aStage setValue:currentElementValue forKey:elementName];
       [currentElementValue release];
       currentElementValue = nil;
   }
}

Ответы [ 2 ]

2 голосов
/ 02 апреля 2011

Простой способ - использовать метод NSDate compare:

NSComparisonResult result = [stageDate compare:aDate];  
if (result == NSOrderedAscending)     
    // stageDate is in the future
else if (result == NSOrderedDescending)     
    // stageDate is in the past
else     
    // Both dates are the same
1 голос
/ 02 апреля 2011

Вы сравниваете даты неправильно. Попробуйте это.

NSTimeInterval interval = [date timeIntervalSinceDate:stageDate];
if (interval > 0) {
    [aMonth.stagesPerMonth addObject:aStage];
    [aStage release];
    aStage = nil;
}
...