我将展示一个托管对象列表,其中每个托管对象都有一个timeStamp属性。我想使用timeStamp属性按时间顺序对列表进行排序,我使用的是NSSortDescriptor。但我也希望根据整个日期(每天一个部分)生成部分
以下将给出一个基于第二个差异的部分,其中有太多部分:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"timeStamp" cacheName:@"PatientDetailViewCache"];
有没有办法使用格式化为yy-MM-dd的NSFetchedResultsController从timeStamp属性生成部分?
感谢您的帮助
基督教
答案 0 :(得分:2)
最简单的方法是在子类NSManagedObject上为格式化日期创建属性并使用该属性进行排序。有很多关于SO的问题有类似的问题。
Setting UITableView headers from NSFetchedResultsController
A NSFetchedResultsController with date as sectionNameKeyPath
但是在awakeFromFetch:
中创建一个类宽的NSDateFormater,如下所示:
-(void)awakeFromFetch{
dateFormater = [[NSDateFormatter alloc] init];
[dateFormater setDateFormat:@"yy-MM-dd"];
[super awakeFromFetch];
}
然后在该类属性的访问器中执行以下操作:
-(NSString*)myprop{
if(myprop==nil){
myprop = [dateFormat stringFromDate:self.OTHERDATE];
}
return myprop;
}
然后你的获取结果控制器是:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"myprop" cacheName:@"PatientDetailViewCache"];
然后它将返回格式化的日期并根据它进行排序。