在核心数据中存储时,是否必须存储两个实体数据?

时间:2012-06-14 07:50:40

标签: ios xcode cocoa-touch core-data

我正在创建一个核心数据应用程序,其中:

category实体具有以下属性

  

CATID :INT

     

catname :字符串

     

randomrelation :to-many rel to brandom entity

brandom是具有属性的另一个实体

  

cid :类别实体

     

:INT

     

ARR :INT

我的代码如下

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]);
}

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的问题。

关于您的标题问题,如果您询问是否必须存储与关联关联的不同优势的数据,答案是取决于

如果属性(关系)已声明为可选(1),或者如果声明为非可选(2),则必须在同一时间设置它们,才能在应用程序生命周期内的不同时间执行此操作。

因此,如果在第一种情况(1)中,如果可以设置,则创建category实体并在不同时间设置其关系randomrelation。在第二个(2)中,您需要同时设置两个,因为Core Data会给出一致性错误。

有关您模特的一些注意事项。

首先调用类名称之类的元素,例如Category代替category,并采用驼峰案例表示法。

其次,创建从BrandomCategory的反向关系。反向rels允许您维护图形一致性。在您的模型中Category有一个to to many rel to Brandom声明为可选Brandom有反向且非可选 rel(一对一)到Category。这样,您就可以创建一个Category,其中Brandom Brandom Category {{1}}如果没有{{1}}则无法“生效”。

希望有所帮助。