我有两个实体,我将它们称为 A 和 B。它们在两个方向上都配置了多对多关系,因此 A.myBs 和 B.myAs 都是 NSSet。
这是我奇怪的问题。
当我将 B 添加到 A 实体时,我使用 mutableSetValueForKey 执行此操作,如下所示:
NSMutableSet *myBSet = [myA mutableSetValueForKey:@"myBs"];
[myBSet addObject:theBtoAdd];
这确实将 theBtoAdd 添加到 A 实体,但不添加反向关系。核心数据上下文保存不会出现任何错误,但我的 A 对象没有 B 逆集。如果我退出应用程序,即使部分关系也不会保存。
这是奇怪的部分......如果我只是切换我的代码并做相反的事情(有一些原因,这对于我的特定应用程序来说更难做到) - 将 A 添加到 B 而不是像这样将 B 添加到 A :
NSMutableSet *myASet = [myB mutableSetValueForKey:@"myAs"];
[myASet addObject:theAtoAdd];
它工作得很好。顺便说一句,我还有很多其他有效的关系。只是这个没有。
其他几件事:1)我的核心数据对象模型看起来不错,但这是我在 Xcode 4 下添加的第一个新实体 2)我检查、重新检查并盲目查看我的自定义 NSManagedObjects,但它们看起来很好 - 声明为动态的、NSSet、没有冲突的 setter/getter... 等等。
任何帮助或调试建议将不胜感激。谢谢!