当我以一对多关系重新启动我的 Core Data 应用程序时,我的数据(在 NSTableView 中显示)是随机顺序的。在退出应用程序之前,我如何按照用户离开它的顺序保存它?
当然,我可以在 awakeFromNib
中对数据进行排序,但这并没有给我用户用来排列数据的精确顺序(例如,他可能会手动重新排列行)。
我的文档的详细信息:我拥有的是一个实体“Relationship”,它与一个实体“Card”存在一对多关系,两者都由 NSArrayController 管理。 Card 有 2 个属性,“number”(int)和“name”(String)通过绑定(bind)显示在 NSTableView 的两列中。通过单击表标题进行排序。
如何保留排序顺序?
最佳答案
Core Data 不支持有序集合(如 NSArray)。这是为了支持诸如仅获取一小部分信息而不提取整个商店之类的事情。这就是为什么结果总是在 NSSet(无序集合)中给出的原因。
保留任何类型的排序顺序的唯一方法是向您的实体添加一个属性,例如“sortOrder”,并确保将其设置为有效的内容。然后,您可以设置阵列 Controller 的排序描述符以按 sortOrder 升序排序。同样,如果您使用 NSFetchRequest 手动获取,您也可以设置其排序描述符。
Lion (10.7) 的 更新
如果您的应用程序面向 10.7 及更高版本,NSManagedObject now gives you ordered relationships. 使用 -mutableOrderedSetValueForKey: 和 -mutableOrderedSetValueForKey: 来设置和检索 NSOrderedSets。耶!
关于objective-c - 核心数据 : To-Many Relationship ordered upon restart,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3389834/