2011-10-14 100 views
3

据我所知,CoreData不会在添加记录时保留记录的顺序。所以如果我们想在CoreData中存储对象的数组,我们应该添加像orderId这样的字段到对象中并手动填充它。但它看起来下垫的SQLite基地商店索引的记录,所以可能有一种方法来存储有序的对象,而不增加额外的领域?已订购核心数据记录

回答

8

简答题:否。 长答案:

  • 为了保存顺序,订单信息必须存储。可以隐式地使用ShiShi建议的现有属性上的排序描述符。或者你可以添加一个新的属性来明确维护实例的排序顺序。

  • 如果客户端代码没有定义SQLite,SQLite会保留隐式主键rowId。但是如果客户端代码定义了一个整数主键,SQLite将使用它作为它的rowId。换句话说,在空间和时间上没有优势来尝试聪明并使用SQLite的rowId。请注意,您可以告诉Core Data您的属性应该被编入索引。核心数据可能或可能不定义另一个主键。

  • 试图依靠核心数据如何实现其持久性存储是一个** BAAAAD **想法:你的代码会破坏兼容性与其他卖场,过去现在还是将来,并可能会与未来的突破更新。

  • 您可能已经注意到Core Data现在支持与Mac OS X Lion或iOS 5的有序关系。底层实现最可能使用特定的附加列来存储排序信息。