如何忽略 NSFetchedResultsController 中的 sortDescriptor
Posted
技术标签:
【中文标题】如何忽略 NSFetchedResultsController 中的 sortDescriptor【英文标题】:How to ignore sortDescriptor in NSFetchedResultsController 【发布时间】:2012-05-15 14:13:14 【问题描述】:我正在使用NSFetchedResultsController
来检索UITableView
的数据。
但问题是我必须使用sortDescriptor
和NSFetchedResultsController
。
我不想对我的数据进行排序,我想按照我在表格中插入它们的顺序来显示表格中的数据。
有没有办法处理这个任务?
【问题讨论】:
【参考方案1】:如果您希望数据按插入顺序排序,则需要一个字段来记录此顺序。
一个很好的方法是为您的对象添加一个creationDate
属性,然后使用awakeFromInsert
方法自动记录插入时间。
- (void)awakeFromInsert
[super awakeFromInsert];
[self setValue:[NSDate date] forKey:@"creationDate"];
现在,当您想按插入顺序对它们进行排序时,一切就绪。
【讨论】:
一个更好的方法是在上下文保存通知中设置创建日期,这样在同一个保存中插入的所有对象都将具有相同的时间戳。【参考方案2】:感谢您的回答。我添加了另一个名为排序号的属性并以这种方式实现:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
chapterSN = [userDefaults objectForKey:@"sortingNumber"];
if (chapterSN == Nil)
NSInteger chapterSortingValue = 0;
chapterSN = [NSNumber numberWithInteger:chapterSortingValue];
[userDefaults setValue:chapterSN forKey:@"sortingNumber"];
else
NSInteger chapterSortingValue = [chapterSN integerValue];
chapterSortingValue = chapterSortingValue+1;
chapterSN = [NSNumber numberWithInteger:chapterSortingValue];
[userDefaults setValue:chapterSN forKey:@"sortingNumber"];
【讨论】:
以上是关于如何忽略 NSFetchedResultsController 中的 sortDescriptor的主要内容,如果未能解决你的问题,请参考以下文章
为啥不能两次获取相同的数据? NSFetchedResultsController 为空