Просмотр таблицы с разделами в день (с основными данными) - PullRequest
2 голосов
/ 29 декабря 2010

У меня довольно обычное приложение для чтения RSS.Объекты в Базовых данных имеют атрибут pubDate, который является точной датой + временем публикации.Использование этого для разделов дает каждой статье свой собственный раздел.

Поэтому я добавил переходный атрибут:

@dynamic sectionDay;

-(NSString *) sectionDay {  
    // Get the date, and convert it to the day (counld probably be done a bit more scientific!)
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];

    //Set the required date format
    [formatter setDateStyle:NSDateFormatterLongStyle];

    // Set the values;
    NSString *dateString = [formatter stringFromDate:self.pubDate]; 

    return dateString;
}

Затем в FetchedResultsController я добавил sectionDay как sectionNameKeyPath

    // Edit the sort key as appropriate.
    NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"pubDay" ascending:NO] autorelease];
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[self managedObjectContext] sectionNameKeyPath:@"sectionDay" cacheName:nil];

Проблема в том, что я получаю «ojbc_exception_throw» на NSFetchedResultsController PerformFetch:

*

#0  0x012165a8 in objc_exception_throw
#1  0x00eba676 in -[NSSQLGenerator newSQLStatementForFetchRequest:ignoreInheritance:countOnly:nestingLevel:]
#2  0x00df2a78 in -[NSSQLAdapter _newSelectStatementWithFetchRequest:ignoreInheritance:]
#3  0x00df2881 in -[NSSQLAdapter newSelectStatementWithFetchRequest:]
#4  0x00df272e in -[NSSQLCore newRowsForFetchPlan:]
#5  0x00df1ab5 in -[NSSQLCore objectsForFetchRequest:inContext:]
#6  0x00df166e in -[NSSQLCore executeRequest:withContext:error:]
#7  0x00ea10ec in -[NSPersistentStoreCoordinator executeRequest:withContext:error:]
#8  0x00dee807 in -[NSManagedObjectContext executeFetchRequest:error:]
#9  0x00ed2c10 in -[NSFetchedResultsController performFetch:]
#10 0x0000456e in -[ArticleController getArticles] at ArticleController.m:92

*

Любые предложения, что я делаю неправильно?

1 Ответ

2 голосов
/ 30 декабря 2010

Редактировать: Решение в первом комментарии от BoltClock!

Поскольку временные свойства не хранятся в базе данных, контроллер выборочных результатов не может запросить их с помощью операторов sql (ваше сообщение об ошибке)

Возможным решением будет дополнительное сохранение нормализованной даты (удаление компонента времени, установленного на 00:00:00) для группировки записей по дате без времени.

Apple рекомендует решение такого типа в некоторых случаях, например, для хранения нормализованных строк для поиска

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