核心数据:以一对多关系存储有序值

Core Data: storing ordered values in a one-to-many relationship

我正在构建一个锻炼应用程序,它有一个名为 Workout 的实体和另一个名为 Exercise 的实体。 一个锻炼可以包含多个练习(因此是一对多的关系)。我想向我的应用程序的用户展示锻炼中包含的锻炼,但要以有序的方式进行(从力量锻炼开始与从有氧运动开始是不一样的)。

显然,在 Core Data 中建立这种关系时,我需要使用 NSSet,因为如果我尝试使用例如 Array 来排序元素,我会得到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unacceptable type of value for to-many relationship: property = "consistsOf"; desired type = NSSet; given type = __NSArray0; value = (
).'

我试图检查我的模型中的“已订购”复选标记,但随后我收到一条错误消息“Workout.consistsOf 不得订购”。 我也尝试过使用一个 NSDictionary ,它的键是位置,值是练习本身,但我得到了与上面相同的错误。

如何以有序的方式向用户显示锻炼包含的练习?

非常感谢!

P.S.: 这是我模型属性的截图。

有序关系使用 NSOrderedSet,但 CloudKit 不支持有序集,因此您不能在同一数据模型中使用有序关系和 CloudKit。

要保留订单,您需要在 Exercise 上有一些 属性 来指示订单。这可以像整数 属性 一样简单,称为 index。您将根据索引值对结果进行排序。如果还有其他东西也表示顺序——比如日期,也许吧?——使用它而不是添加新的 属性.