p.p*_*pad 12 entity-relationship core-data inverse ios xcode4
我有两个实体,我称之为A和B.它们在两个方向都配置了To-Many关系,因此A.myBs和B.myAs都是NSSets.
这是我奇怪的问题.
当我向我的A实体添加B时,我使用mutableSetValueForKey这样做:
NSMutableSet *myBSet = [myA mutableSetValueForKey:@"myBs"];
[myBSet addObject:theBtoAdd];
Run Code Online (Sandbox Code Playgroud)
这会将theBtoAdd添加到A实体,但不会添加反向关系.核心数据上下文保存不会导致任何错误,但我的A对象没有B逆集.如果我退出应用程序,则甚至不保存部分关系.
这是奇怪的部分...如果我只是切换我的代码并执行相反的操作(有理由为我的特定应用程序更难做到这一点) - 将A添加到B而不是像这样添加B到A:
NSMutableSet *myASet = [myB mutableSetValueForKey:@"myAs"];
[myASet addObject:theAtoAdd];
Run Code Online (Sandbox Code Playgroud)
它工作得很好.顺便说一句,我有很多其他有效的关系.只是这一个没有.
其他一些事情:1)我的核心数据对象模型看起来很好,但这是我在Xcode 4下添加的第一个新实体2)我已经检查,重新检查并且盲目地查看我的自定义NSManagedObjects,但它们看起来罚款 - 声明动态,NSSet,没有冲突的setter/getters ......等等.
任何帮助或调试建议将不胜感激.谢谢!
我遇到了同样的问题,这就是我看到这个问题的原因.也许我的解决方案可以帮助处于相同情况的一些人.
对我来说,答案是在NSManagedObject子类中,我已经过度了:
- (void)willChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects
- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects
Run Code Online (Sandbox Code Playgroud)
这可以防止将正确的通知发送到处理自动反向关系的父类(NSManagedObject).
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |