【发布时间】:2013-11-22 17:48:56
【问题描述】:
我使用 NSFetchedResultsController 来填充 TableView。我希望这些部分按日期降序排序,行按日期升序排序。两者都使用键“creation”,并且这些部分具有 sectionNameKeyPath 的瞬态属性,该属性返回日期的字符串,格式为:“Today, Yesterday, 20.11.2013, 19.11.2013, ...”从“creation”日期创建.但是,这些行始终按照第一个排序描述符的顺序进行排序。这种做法有错吗?
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Exercise"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creation" ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"creation" ascending:YES]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.context
sectionNameKeyPath:@"localizedCreationDate"
cacheName:nil];
感谢您提供的任何帮助! br
更新
上述方法行不通。 :) 我通过将第二个日期保存为当天开始的属性来解决它,按降序排列。这也用作 sectionNameKeyPath。此外,对于节标题,使用本地化创建日期。
- (void)setuptFetchedResultsController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"DNALoggedExercise"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDayDate" ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.context
sectionNameKeyPath:@"creationDayDate"
cacheName:nil];
}
【问题讨论】:
标签: ios nsfetchedresultscontroller nssortdescriptor