【发布时间】:2014-01-28 18:57:01
【问题描述】:
我正在使用 NSSortDescriptors 对核心数据对象进行排序并根据日期属性创建表格视图部分。使用这种 SortDescriptor,表格视图部分按预期排序,但部分内的行也按相同的日期属性排序。有没有办法在每个部分内有另一个订购系统?我猜主要问题是核心数据存储日期对象的日期+时间值,这样就没有对象具有完全相同的日期值。但我需要根据另一个属性对同一部分内的对象进行排序。 谢谢。
这是我的 NSFetchedResultsController 代码:
-(NSFetchedResultsController*)fetchedResultsController{
if (_fetchedResultsController != nil){
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSManagedObjectContext *context = self.managedObjectContext;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"itemDate" ascending:YES];
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc]initWithKey:@"itemName" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor,sortDescriptor1, nil];
fetchRequest.sortDescriptors = sortDescriptors;
_fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:@"sectionIdentifier" cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
编辑问题
这是添加到 cellForRowAtIndexPath 方法中的一段代码:
int indexpathsection = indexPath.section;
[self sortedSectionForIndex:indexpathsection];
NSLog(@"INDEXPATH= %ld", (long)indexPath.section);
这是马库斯提出的方法:
- (NSArray*)sortedSectionForIndex:(NSInteger)index
{
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"priority" ascending:YES];
id section = [[self fetchedResultsController] sections][index];
NSLog(@"INDEX********* = %ld", (long)index);
NSArray *objects = [section objects];
NSArray *sorted = [objects sortedArrayUsingDescriptors:@[sort]];
return sorted;
}
【问题讨论】:
-
欢迎来到stackoverflow!如果你展示你的数据结构/代码,你会得到更好的答案。
-
谢谢,我会将我的 NSFetchedResultsController 代码添加到我的问题中。
-
@CorleyBrigman,我已将代码添加到问题中。
标签: ios uitableview core-data