表视图部分最后排序



如何使用NSFetchedResultsController,以便最后列出一个特定部分?我目前正在按部门对项目进行分组,并按名称订购:

 // sort
    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"department" ascending:YES];
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"dateAdded" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    // fetch results, sectioned by department
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:list.managedObjectContext sectionNameKeyPath:@"department" cacheName:nil];

然而,我希望某个特定的部门总是最后返回。我可以使用排序描述符的组合来实现这一点吗?还是应该尝试在cellForIndexPath方法中解决它?

在数据库中需要最后一个(last==1,默认为0)的标志上放置一个标志,并使用该标志作为主要排序描述符,怎么样?

您可以使用

- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending comparator:(NSComparator)cmptr 

并且您定义了一个比较器方法,该方法将根据除特定部门之外的任何部门的字母顺序返回NSComparationResult。对于这一个,您将始终返回NSOrderedDescending。

那就行了。

最新更新