首页 文章

核心数据:重启时订购的To-Many关系

提问于
浏览
4

当我以多对多关系重新启动我的Core Data应用程序时,我的数据(在NSTableView中显示)是随机顺序 . 如何在退出应用程序之前按照用户保留的顺序保留它?

当然,我可以对 awakeFromNib 中的数据进行排序,但这并没有给出用户用于排列数据的精确顺序(例如,他可能会手动重新排列行) .

我的文档的详细信息:我所拥有的是与NSArrayController管理的实体“Card”的多对多关系中的实体“关系” . Card有2个属性,“number”(int)和“name”(String)通过NSTableView的两列中的Bindings显示 . 通过单击表头来完成排序 .

如何保留排序顺序?

1 回答

  • 10

    核心数据不支持有序集合(如NSArray) . 这是为了支持诸如仅提取一小部分信息而不拉入整个商店的事情 . 这就是为什么结果总是在NSSet(无序集合)中给出的原因 .

    保留任何类型排序顺序的唯一方法是向您的实体添加属性,如“sortOrder”,并确保将其设置为有效的 . 然后,您可以将数组控制器的排序描述符设置为按sortOrder进行升序排序 . 同样,如果您使用NSFetchRequest手动提取,也可以设置其排序描述符 .

    Update for Lion (10.7)

    如果您的应用程序中的目标是10.7及更高版本,请使用-mutableOrderedSetValueForKey:和-mutableOrderedSetValueForKey:来设置和检索NSOrderedSets . 好极了!

相关问题