gpt4 book ai didi

ios - 按 NSDate 将 nsarray 分成多个部分

转载 作者:行者123 更新时间:2023-11-29 13:26:32 24 4
gpt4 key购买 nike

我有一个从核心数据中提取的 NSArray。数组中的实体有一个 date 属性(当然是 NSDate 类型)。我想做的是:

  • 数组需要在表格 View 中显示,
  • 数组中对象的部分及其标题是月份

例如,如果我有 3 个对象(4 月 1 日、4 月 3 日和 7 月 7 日),则应该有 2 个部分: - 2012 年 4 月(2 目标) - 2012 年 7 月(1 个对象))。

如何拆分数组?

最佳答案

尝试使用 NSFetchedResultsController 和自定义 sectionNameKeyPath,这应该是您的 NSManagedObject 子类中的一个方法。

fetchedResultsController 可以设置如下:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MyObject"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
request.sortDescriptors = @[sortDescriptor];
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:@"monthAsString" cacheName:nil];

您需要在您的 managedObject 子类中实现 monthAsString 方法。只分配 NSDateFormatter 一次,因为如果您为每次调用都分配一个新实例,它的性能将不会很好。

 - (NSString *)monthAsString {
static NSDateFormatter *formatter;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"MMMM yyyy";
});

NSString *dateString = [formatter stringFromDate:self.date];
return dateString;
}

关于ios - 按 NSDate 将 nsarray 分成多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com