ios – 当我在两个有效对象之间设置关系时,validateForInsert失败

我有两个型号:

User
Company

用户有两个属性:

firstName
lastName

公司有一个属性:

name

用户和公司之间存在一对多(即用户可以拥有多家公司).

我可以在我的应用程序中很好地创建这两个对象之间的关系.但是,当我设置如下相同的关系时,我的单元测试失败了:

User *user = [UserFactory regularUserInContext:self.context];
Company *comp = [CompanyFactory regularCompanyInContext:self.context];
comp.owner = user;
NSError *error;
XCTAssertTrue([comp validateForInsert:&error], @"Company should save when all properties are set correctly");

有问题的Factory方法只是在User和Company上设置了基本属性 – 我可以确认这些属性设置正确.但是,由于以下错误,验证步骤失败:

Dangling reference to an invalid object

似乎该公司抱怨用户对象无效.但是,如果我没有设置关系并单独在User和Company上运行validateForInsert,那么它们会成功通过.

我也尝试过双方建立关系,但无济于事.我将删除规则都设置为“无操作”.

我的数据模型设置为公司是用户的可选关系,反之亦然.无法弄清楚为什么这不会过去……

最佳答案 好的,看起来这里的问题与使用不同的上下文有关.在此之前,我为两个在上下文中创建所述对象的对象设置了Factory类,但非常愚蠢的是,我忘了初始化有问题的上下文.由于这是一个测试,我决定使用MR_createEntity而不是MR_createEntityInContext …方法,这样就清除了一切.

关于这个的两件事:

>由于两个对象都没有附加到上下文(或者更可能 – 我不完全理解这里到底发生了什么),所以validateForInsert没有传递,这仍然很奇怪.
> Xcode错误报告一如既往地好< / sarcasm>

点赞