1
我想创建一个子对象,并通过将父对象分配给子对象中的关系将其连接到它的父对象。我使用此代码:分配给核心数据对象中的关系似乎破坏对象
Serial *object = [NSEntityDescription insertNewObjectForEntityForName:@"Serial" inManagedObjectContext:AppDelegatePtr.managedObjectContext];
NSLog(@"context is %@", object.managedObjectContext);
[object setValue:self.textNarrative.text forKey:@"narrative"];
NSLog(@"%@",[[SMNetworkModel sharedInstance ] selectedExerciseID]);
[object setInExercise:(Exercise *)[[SMNetworkModel sharedInstance ] selectedExerciseID]];
NSError *error;
if (![AppDelegatePtr.managedObjectContext save:&error])
{
NSLog(@"Failed to save - error: %@", [error localizedDescription]);
}
但是,它提供了以下的调试/错误:
2014-11-02 23:36:49.622 RVP[4464:139260] context is <NSManagedObjectContext: 0x7faf19fa1140>
2014-11-02 23:36:49.623 RVP[4464:139260] 0xd000000000040000 <x-coredata://D08DF3CD-A5E0-4445-B7C4-A84448110BDA/Exercise/p1>
2014-11-02 23:36:49.623 RVP[4464:139260] -[_NSCoreDataTaggedObjectID managedObjectContext]: unrecognized selector sent to instance 0xd000000000040000
在上面的代码线5中产生的错误。看起来,父对象id(如在调试中)以某种方式覆盖托管实体对象中的托管对象上下文属性。这种关系在这个实体中是一对一的关系,而一对多关系是相反的。如果我将其更改为1:1,它也不会影响错误。如果我注释掉第5行,对象会被保存,但是会作为孤儿。
我在做什么错?
谢谢! 35年的SQL给了我一定的范式僵化!事实上,我只需要在这里更换一行代码,另一个代码存储对象而不是对象ID,这一切都会突然变为现实。再次感谢。 – Nick 2014-11-03 11:01:20