【问题标题】:divide fetched results NSDate into sections for each single day use core data将获取的结果 NSDate 分成每天使用核心数据的部分
【发布时间】:2012-01-29 16:54:10
【问题描述】:

我知道获取结果控制器具有节名称键路径可以将获取结果分成多个部分。 但是我怎么能把 NSDate 分成每天或每个月的部分呢? 或者有什么其他方法可以解决这个问题? 谢谢。

【问题讨论】:

    标签: ios core-data nsdate nsfetchedresultscontroller


    【解决方案1】:

    您需要做的是在数据对象上创建一个瞬态属性,然后对获取的结果进行相应的排序。对于我工作过的 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];
    }
    

    匹配的fetchrequest

    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"];
    

    【讨论】:

    • cacheName: @"SearchEvents" 这是类名还是实体?引用实体时出现错误。谢谢。
    • 只使用 nil 作为 cacheName 代替。在许多情况下,您不需要提供一个
    【解决方案2】:

    请参考“DateSectionTitles”的Apple示例代码,您可以在Xcode帮助中搜索。 它有很大帮助!

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多