有序的CoreData记录

Vla*_*mir 3 iphone cocoa-touch core-data objective-c

据我所知,CoreData在添加记录时不会保留记录顺序.因此,如果我们想在CoreData中存储对象数组,我们应该将orderId这样的字段添加到object并手动填充它.但它看起来底层sqlite基础存储索引的记录,所以可能有一种方法来存储有序对象而不添加额外的字段?

Jea*_*uys 8

简答:没有.答案很长:

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

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

  • 试图依赖Core Data如何实现其持久存储是一个**BAAAAD**的想法:您的代码将破坏与其他商店的兼容性,无论是现在还是将来,并且可能会在未来的更新中中断.

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