在以Core Data作为后备存储的UITableViewController中实现用户定义的排序时,我需要执行哪些步骤?

我仍然需要响应-tableView:moveRowAtIndexPath:fromIndexPath:toIndexPath:还是表格 View 会自动处理模型的重新排序?我是否可以仅选中Core Data模型文件中的“Ordered”复选框,并希望它将更改从表 View 传输到商店,还是我需要做更多的事情?我是否需要更改fetchedResultsController获取对象的方式(例如,添加排序描述符)?

最佳答案

您不需要放弃NSFetchedResultsController或NSOrderedSet 。如果您坚持使用NSOrderedSet,那么简单的方法就是将方法添加到对象NSManagedObject子类中。因此,例如,如果您的对象Book带有一组有序的Chapters,则可以将方法添加到Chapters对象中:

- (NSUInteger)indexInBookChapters
{
    NSUInteger index = [self.book.chapters indexOfObject:self];
    return index;
}

提示:将其添加到类别中,以免被CoreData自动生成的代码覆盖。

然后,您可以在NSFetchedResultsController的排序描述符中使用此方法:
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"indexInBookChapters" ascending:YES]];

关于ios - 使用UITableView和NSOrderedSet进行核心数据排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9875557/

10-09 16:26
查看更多