Сортировать UItableView по дате условно - PullRequest
0 голосов
/ 19 августа 2010

Я только начал две недели назад с ObjectiveC, и я полный нуб, так что будьте спокойны. Я хочу загрузить tableView со следующим:

Предстоящие события
.event4 xx / xx / 2010
.event5 xx / xx / 2010
Проходные события
.event1 xx / xx / 2008
.event4 xx / xx / 2008
.event5 xx / xx / 2008

Я использую базовые данные с fetchedResultsCOntroller. Какой лучший способ сделать это?

С наилучшими пожеланиями
Рикардо Кастро

Ответы [ 2 ]

1 голос
/ 23 августа 2010

спасибо Андрей!это было проще, чем я думал.вот решение.

@implementation NSManagedObject (dateSection)
- (NSString *)sectionNameGen
{
    [self willAccessValueForKey:@"sectionNameGen"];
    NSString *sectionName =[[[NSString alloc]init]autorelease];


    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *components = [cal components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]];
    NSDate *today = [cal dateFromComponents:components];
    components = [cal components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[self valueForKey:@"date"]];
    NSDate *tempDate = [cal dateFromComponents:components];


        if([today isEqualToDate:tempDate])
        {
            sectionName = @"Today's Events";
        }
        else
        {
            if ([today timeIntervalSinceDate:tempDate]<0) 
            {
                sectionName = @"Upcoming Events";
            }
            else 
            {
                sectionName=@"Passed Events";
            }   
        }   

    [self didAccessValueForKey:@"sectionNameGen"];
    return sectionName;
}
@end

и я использовал sectionNameGen в sectionNameKeyPath

1 голос
/ 19 августа 2010

Установите sortDescriptors на NSFetchRequest, который вы даете NSFetchedResultsController. Если у вас есть поле с именем date на вашем NSManagedObject, вы можете создать дескриптор сортировки для этого ключа.

Для разделения на разделы вам нужно добавить метод к вашему объекту, который либо возвращает «Предстоящие события», либо «Прошлые события», а затем использовать имя этого метода в качестве sectionNameKeyPath для NSFetchedResultsController.

Важно, чтобы сортировка, которую вы вводите в дескрипторы сортировки, соответствовала тому, как объекты разбиваются на секции. то есть. Вы не хотите, чтобы какое-либо прошедшее событие сортировалось перед предстоящим, но для вашего случая это не должно быть слишком сложным. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...