1

我有一个问题,我试图解决我需要让一个对象与另一个对象多次相关的地方。目前,我在“序列”和“姿势”之间有一对多的关系。创建序列时,您一次将一批姿势添加到序列中。代码看起来像这样:

- (void)doneAddingItems {
NSMutableOrderedSet *saveSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.sequence.poses];
[saveSet addObjectsFromArray:self.posesToAdd];
self.sequence.poses = [NSOrderedSet orderedSetWithOrderedSet:saveSet];
[self.managedObjectContext save:nil];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}

这对于独特的“姿势”列表非常有用,但显然你不能与同一个对象 TWICE 有关系,所以我不能制作如下序列:

PoseA -> PoseB -> PoseC -> PoseA -> PoseD

其他人如何处理这个问题?我正在考虑创建一个动态实体,该实体将检查序列中是否存在选定的姿势,如果存在,则复制该姿势,以便我们可以“引用它两次”。它们都将包含相同的信息,但将位于不同的索引处。我认为这可以解决我的问题,并且只需要我添加一个动态实体和一些代码来验证重复项并在删除序列时清理实体。

有人有更好的主意吗?

4

1 回答 1

2

我认为 Index 类型的新 NSManagedObject 类可以解决您的问题。在 Sequence 和 Pose 之间没有关系,而是在 Sequence 和 Index 之间建立了 1:many 关系,然后在 Index 和 Pose 之间建立了 many:1 关系。您可以通过检索按“order”属性排序的索引来恢复完整的姿势序列。每个索引指的是一个特定的姿势,而每个姿势可以在多个索引中使用。Index 是一个非常轻量级的对象,只有“order”属性和关系。

副作用是您不再需要使用有序集,因为 Index 的“顺序”值捕获了该信息。

(编舞应用程序?摄影?)

于 2012-11-15T03:37:39.523 回答