6

我们不能在不提供 NSSortDescriptor(s) 的情况下使用 NSFetchRequest。我要做的就是获取结果并按照它们的创建顺序显示它们。有没有内置的方法可以做到这一点?还是我必须创建一个新的“自动增量”字段?(在我看来,这与 CoreData 所代表的一切背道而驰)。

4

3 回答 3

6

Core Data 对订单不做任何保证。您不必创建“自动增量”字段;但是,您可以制作适当的属性。由于您显然关心创建某物的日期,因此您应该向数据对象添加一个 dateCreated 属性。然后,按此排序。

您可以在托管对象的didAwakeFromInsert方法中轻松设置它。

于 2010-08-03T14:57:17.360 回答
6

听起来您正在从表格的角度考虑 Core Data,并期望应该有一个自动排序,就像表格提供的行数一样。但是,Core Data 不使用表、行或任何其他固定的线性数据结构。

没有内置的获取顺序,因为每个获取请求都高度特定于它帮助填充的视图的需求。NSFetchRequest需要一个排序描述符,因为它返回一个数组,并且需要一个排序描述符来将对象图中的无序托管对象转换为有序数组。

通常,对象图中的托管对象没有内置顺序,因为每个数据模型都有不同的数据结构标准。例如,对于大多数模型,插入对象的时间序列是不相关的。为什么在只有极少数情况下才需要它时,将时间戳构建到每个 Core Data 应用程序必须使用的每个托管对象中?

如果时间序列是模型逻辑关系的重要组成部分,即它反映了数据模型模拟的真实对象、事件或条件,那么正如 Jason Coco 建议的那样,您应该向实体本身添加时间戳属性,以便实体对象将模型自己创建的时间。

于 2010-08-04T12:25:33.197 回答
1
[[NSSortDescriptor alloc] initWithKey:@"" ascending:NO];

在我的项目中,我使用 NSFetchRequest 来获取一个列表,并且列表中的所有对象都有一个具有相同值的属性。所以我们使用该属性的名称 "initWithKey:" 。它运作良好。

于 2016-08-24T10:30:37.343 回答