nev*_*ing 10 core-data uitableview ios ios5 nsorderedset
在UITableViewController使用Core Data作为后备存储时,我需要执行哪些步骤来实现用户定义的排序?
我仍然需要响应-tableView:moveRowAtIndexPath:fromIndexPath:toIndexPath:或是否由表视图自动处理模型重新排序?我可以只检查Core Data模型文件中的"Ordered"复选框,并期望它将更改从表视图传输到商店,还是我必须做更多?我是否必须改变fetchedResultsController获取对象的方式(例如添加排序描述符)?
您不需要放弃NSFetchedResultsController或NSOrderedSet.如果你坚持使用NSOrderedSet,那么简单的方法就是向对象NSManagedObject子类添加一个方法.因此,例如,如果您有一个带有一组有序章节的对象Book,则可以向Chapters对象添加一个方法:
- (NSUInteger)indexInBookChapters
{
NSUInteger index = [self.book.chapters indexOfObject:self];
return index;
}
Run Code Online (Sandbox Code Playgroud)
提示:将其添加到类别中,以免被CoreData自动生成的代码覆盖.
然后,您可以在NSFetchedResultsController的排序描述符中使用此方法:
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"indexInBookChapters" ascending:YES]];
Run Code Online (Sandbox Code Playgroud)
我有一个 Core Data 实体的属性,假设它是一个NSNumber被调用的sortOrder.
当您在此列表中初始化一个新对象时,请按sortOrder升序分配,以便使用默认排序顺序。
最后,告诉您为此 sortOrder 属性fetchedResultsController使用额外的属性。sortDescriptor
当用户调整条目的位置时,您可以将 设为sortOrder该条目之前和之后条目的平均值。
(只是一个想法——我还没有处理这个问题或必须实现它,但正在为我的项目考虑它。)
| 归档时间: |
|
| 查看次数: |
3857 次 |
| 最近记录: |