核心数据:对实体中一个对象的多个引用的问题



我有一个问题正在解决,我需要让一个对象与另一个对象多次关联。目前,我在"序列"one_answers"姿势"之间有一对多的关系。创建序列时,一次向序列添加一批姿势。代码看起来像这样:

- (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];
}

这对于一系列独特的"姿势"非常有效,但很明显,你不能两次与同一个物体建立关系,所以我不能制作如下序列:

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

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

有人有更好的主意吗?

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

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

(编舞应用?摄影?)

最新更新