делить полученные результаты NSDate на разделы для каждого дня использования основных данных - PullRequest
5 голосов
/ 29 января 2012

Я знаю, что у контроллера полученных результатов есть путь к ключу имени раздела, который может делить полученные результаты на разделы. Но как я могу разделить NSDate на разделы для каждого дня или каждого месяца? Или есть другие способы решения этой проблемы? Спасибо.

Ответы [ 2 ]

8 голосов
/ 29 января 2012

Что вам нужно сделать, это создать временное свойство для вашего объекта данных, а затем соответствующим образом отсортировать полученные результаты.Для TVGuide, над которым я работал, мне нужно было отсортировать результаты по airDay и в итоге отсортировать события по startDate и использовать переходное свойство для пути имени раздела:

В Event.m:

-(NSString*) airDay 
{
    NSDateFormatter *dayFormatter=[[NSDateFormatter alloc] init];
   [dayFormatter setLocale:[NSLocale currentLocale]];
   [dayFormatter setDateStyle: NSDateFormatterMediumStyle];
   [dayFormatter setDoesRelativeDateFormatting: YES];  

   return [dayFormatter stringFromDate:self.startDate];
}

Соответствующий запрос на выборку

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:[Database db].managedObjectContext];
[fetchRequest setEntity:entity];

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:
                          [NSSortDescriptor sortDescriptorWithKey:@"startDate"           
                                                        ascending:YES],
                                                        nil];

[fetchRequest setSortDescriptors:sortDescriptors];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                                                                      managedObjectContext:[Database db].managedObjectContext 
                                                                        sectionNameKeyPath:@"airDay" 
                                                                                 cacheName:@"SearchEvents"];
3 голосов
/ 03 февраля 2013

Пожалуйста, обратитесь к образцу кода Apple " DateSectionTitles ", вы можете найти его в справке Xcode.это очень помогает !!

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