没有排序描述符的NSFetchRequest

时间:2010-08-03 14:46:47

标签: iphone core-data nsfetchrequest nssortdescriptor

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

2 个答案:

答案 0 :(得分:6)

核心数据不保证订单的任何内容。您不必进行“自动增量”字段;但是,您可以创建适当的属性。由于您显然关心创建日期,因此应将dateCreated属性添加到数据对象中。然后,按此排序。

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

答案 1 :(得分:6)

听起来你正在考虑表格方面的核心数据,并期望应该有一个自动排序,就像表格的行号一样。但是,Core Data不使用表,行或任何其他固定的线性数据结构。

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

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

如果时间序列是模型逻辑关系的重要部分,即它反映了数据模型模拟的真实对象,事件或条件,as Jason Coco suggested,则应该为实体本身添加时间戳属性,例如实体对象将模拟自己创建的时间。