iphone coredata 获取请求排序

Posted

技术标签:

【中文标题】iphone coredata 获取请求排序【英文标题】:iphone coredata fetch-request sorting 【发布时间】:2010-05-10 13:55:38 【问题描述】:

我正在使用核心数据并成功获取结果。我对核心数据有几个问题 1.当我添加一条记录时,它是在实体的末尾添加还是在实体的开头添加。 2. 我正在使用以下代码来获取数据。数组正在填充所有记录。但它们与我将记录输入实体的顺序不同。为什么?在什么基础上使用默认排序?

    NSFetchRequest* allLatest = [[NSFetchRequest alloc] init];
[allLatest setEntity:[NSEntityDescription entityForName:@"Latest" inManagedObjectContext:[self managedObjectContext]]];

NSError* error = nil;
NSArray* records = [managedObjectContext executeFetchRequest:allLatest error:&error];
[allLatest release];

3。我输入记录的方式,1,2,3,4............一段时间后,我想删除我首先输入的记录(我的意思是最旧的数据)。比如删除最旧的两条记录。怎么做?

【问题讨论】:

【参考方案1】:

对数组的排序如下所示:

NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"SortKey" 升序:YES] autorelease]; NSArray *sortedList = [记录 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]];

initWithKey: 参数是您想要排序的属性。如果您有多个要排序的键,则可以将它们作为列表添加到 sortedArrayUsingDescriptors: 参数中。该列表将按第一个描述符排序,然后每个组按下一个描述符排序。

-丹

【讨论】:

我不想排序。我想要按照我插入实体的顺序记录。 如果我向实体添加一些“日期”属性,然后我可以获取直接从核心日期排序的记录。或者,我可以删除只保留最近一周数据的记录吗?【参考方案2】:

不保证以任何方式订购。如果您关心顺序,则需要在您的实体中包含一个属性(例如,将其称为“sequenceNumber”)并将其用于您的 NSFetchRequest 的排序描述符中。

【讨论】:

以上是关于iphone coredata 获取请求排序的主要内容,如果未能解决你的问题,请参考以下文章

使用 CoreData 如何配置获取请求以查找即将到来的生日?

使用两个 NSFetchedResultsController 从 CoreData 获取大量数据

iPhone CoreData:如何按天对获取的结果进行分组?

获取已排序记录的问题 (CoreData)

CoreData:按创建的顺序获取和排序结果,不使用时间戳

iPhone CoreData 加入