我对核心数据不熟悉,如果有人可以提供反馈/暗示我给定的要求,那就太棒了。
Entity A
{
property 1;
property 2;
property 3;
}
Entity B
{
property 1;
property 2;
property 3;
}
Entity C
{
EntityB ObjB; // pointing to Entity B
EntityA ObjA; // pointing to Entity A
property 1;
property 2;
property 3;
}
Entity D
{
EntityB ObjB; // pointing to Entity B
EntityA ObjA; // pointing to Entity A
property x;
property y;
property z;
}
新插入的异议需要存储到实体C,实体D中,并且具有更多属性。
用于隔离下面提到的方法的主要上下文的插入
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityB" inManagedObjectContext:self.managedObjectContext];
objB = [[EntityB alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
因为我有商店objB& objA进入EntityC,将使用下面的EntityD方法。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityC" inManagedObjectContext:self.managedObjectContext];
objC = [[EntityC alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
objC.objB = objC;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityD" inManagedObjectContext:self.managedObjectContext];
objD = [[EntityD alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
objD.objB = objB;
然后我最后将所有对象保存到主要上下文中。
[self.managedObjectContext insertObject:objB];
[self.managedObjectContext insertObject:objC];
[self.managedObjectContext insertObject:objD];
[self.managedObjectContext save:&error];
由于我对核心数据没有太多经验,我想知道他们存储信息的方式是好的,或者还有另一种方法可以在上述场景中存储数据。
感谢您宝贵的时间。
答案 0 :(得分:0)
此:
objC.objB = objC;
没有意义,可能是一个错字,你的意思是
objC.objB = objB;
此:
objD.objB = objB;
是正确的,并确定objD
和objB
之间的关系。
这些电话:
[self.managedObjectContext insertObject:objB];
[self.managedObjectContext insertObject:objC];
[self.managedObjectContext insertObject:objD];
因为initWithEntity:insertIntoManagedObjectContext:
已经存在,所以不需要将对象插入上下文。
请注意,您还应该定义 EntityA 和 EntityB 的反向关系 EntityC 和 EntityD ,如果您已经这样做,我无法从您的问题中看到。