如何忽略 NSFetchedResultsController 中的 sortDescriptor

Posted

技术标签:

【中文标题】如何忽略 NSFetchedResultsController 中的 sortDescriptor【英文标题】:How to ignore sortDescriptor in NSFetchedResultsController 【发布时间】:2012-05-15 14:13:14 【问题描述】:

我正在使用NSFetchedResultsController 来检索UITableView 的数据。 但问题是我必须使用sortDescriptorNSFetchedResultsController。 我不想对我的数据进行排序,我想按照我在表格中插入它们的顺序来显示表格中的数据。

有没有办法处理这个任务?

【问题讨论】:

【参考方案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 为空

启动 Core Data 应用程序时在后台配置 NSFetchedResultsController

如何检查文件是不是被git忽略[重复]

如何将文件添加到忽略列表中

如何忽略其中已经忽略的部分html代码[重复]

如何评论为啥可以忽略捕获