2012-06-14 31 views
2

我创建一个核心数据应用程序,其中:当存储在核心数据中时,是否必须存储两个实体数据?

category实体具有以下属性

CATID:整数

catname:字符串

randomrelation:到-many rel to brandom entity

brandom是另一实体具有属性

CID:类别实体

没有:整数

ARR:整数

我的代码如下

category *c=[NSEntityDescription insertNewObjectForEntityForName:@"category" inManagedObjectContext:context]; 

for (int i=0; i<[arrayofnumbers count]; i++) { 

    brandom *r=[NSEntityDescription insertNewObjectForEntityForName:@"brandom" inManagedObjectContext:context]; 
    c.catid=[NSNumber numberWithInt:i]; 
    r.cid=c; 
    r.no=[NSNumber numberWithInt:i+1]; 
    int objectatindex=[[arrayofnumbers objectAtIndex:i] intValue]; 
    NSLog(@"object at index:%i",objectatindex); 
    r.arr=[NSNumber numberWithInt:objectatindex]; 
    [set addObject:r]; 
} 

c.randomrelation=r; 
NSLog(@"set element count=%i",[set count]); 
if (![context save:&error]) { 
    NSLog(@"%@",[error localizedDescription]); 
} 
+0

对不起,但我不明白你的问题。你在问什么?你可以解释吗? – svena

+0

我具有两个实体 第一个类别 第二个qrandom ,以qrandom类之间的关系是多对多 ,并从qrandom到类别是一对多 ,我要求那 ,如何存储数据? –

回答

2

我不漂亮知道如果我明白你的问题。

关于您的标题问题,如果您问是否必须存储与relatiosnhip链接的不同特征的数据,答案是取决于

如果属性(关系)已被声明为可选(1),或者如果声明为非可选(2),则必须同时设置它们,您可以在应用程序生命周期的不同时间执行此操作。因此,如果在第一种情况下(1)如果可以设置,则创建category实体并在不同的时间将其关系设置为randomrelation。在第二个(2)中,您需要同时设置两者,因为核心数据会给出一致性错误。

关于模型的一些注意事项。

首先调用诸如类的名称,例如在enities Category代替category,并采用驼峰符号。

其次,创建一个具有相反的关系从BrandomCategory。逆向rels允许你保持图的一致性。在你的模型Category有一对多rel来Brandom声明为可选Brandom具有逆和非可选 REL(一到一个)Category。这允许您创建一个Category与零个或多个Brandom一个Brandom不能“活”没有Category

希望有所帮助。

+0

非常感谢爵士:) –

相关问题