首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未设置核心数据反向关系

未设置核心数据反向关系
EN

Stack Overflow用户
提问于 2011-06-01 01:22:57
回答 3查看 3.4K关注 0票数 12

我有两个实体,我称之为A和B。它们在两个方向上都配置了多对多关系,所以A.myBs和B.myAs都是NSSets。

这就是我奇怪的问题。

当我将B添加到我的A实体中时,我使用mutableSetValueForKey这样做:

代码语言:javascript
复制
NSMutableSet *myBSet = [myA mutableSetValueForKey:@"myBs"];
[myBSet addObject:theBtoAdd];

这会将theBtoAdd添加到A实体,但不会添加反向关系。核心数据上下文保存不会消除任何错误,但是我的A对象没有设置B逆集。如果我退出应用程序,即使是部分关系也不会保存。

奇怪的是..。如果我只是改变我的代码,做相反的事情(对于我的特定应用程序,这是有原因的)-将A添加到B,而不是像这样将B添加到A:

代码语言:javascript
复制
NSMutableSet *myASet = [myB mutableSetValueForKey:@"myAs"];
[myASet addObject:theAtoAdd];

它工作得很好。顺便说一句,我还有很多其他的对多的关系。只有这一个不是。

其他几件事: 1)我的核心数据对象模型看起来很好,但这是我在Xcode4下添加的第一个新实体。2)我检查了一遍又一遍,在查看我的自定义NSManagedObjects时,它们看起来很好-声明为动态的、NSSet的、没有冲突的setter/getter……等。

如有任何帮助或调试建议,将不胜感激。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-23 23:12:47

我只是遇到了同样的问题,这就是为什么我看到了这个问题。也许我的解决方案会帮助一些处于同样情况的人。

对我来说,答案是在NSManagedObject子类中我重写了:

代码语言:javascript
复制
- (void)willChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects

- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects

这会阻止将正确的通知发送到处理自动反向关系的父类(NSManagedObject)。

票数 7
EN

Stack Overflow用户

发布于 2016-02-29 22:26:17

如果您要覆盖这些方法中的任何一个,我发现了错误

代码语言:javascript
复制
// KVO change notification
- (void)willChangeValueForKey:(NSString *)key;
- (void)didChangeValueForKey:(NSString *)key;
- (void)willChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects;
- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects;

这将导致NSManagedObject无法正常工作,并且无法正确设置关系

Apple文档:您不能重写这些方法。

票数 3
EN

Stack Overflow用户

发布于 2011-06-03 02:36:13

如果您正在对托管对象进行子类化,不是应该有自动生成的多对多关系方法吗?因此,您只需调用:

代码语言:javascript
复制
[aObject addBObject:bObject];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6191160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档