我正在创建一个核心数据应用程序,其中:
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]);
}
答案 0 :(得分:2)
我不确定我是否理解你的问题。
关于您的标题问题,如果您询问是否必须存储与关联关联的不同优势的数据,答案是取决于。
如果属性(关系)已声明为可选(1),或者如果声明为非可选(2),则必须在同一时间设置它们,才能在应用程序生命周期内的不同时间执行此操作。
因此,如果在第一种情况(1)中,如果可以设置,则创建category
实体并在不同时间设置其关系randomrelation
。在第二个(2)中,您需要同时设置两个,因为Core Data会给出一致性错误。
有关您模特的一些注意事项。
首先调用类名称之类的元素,例如Category
代替category
,并采用驼峰案例表示法。
其次,创建从Brandom
到Category
的反向关系。反向rels允许您维护图形一致性。在您的模型中Category
有一个to to many rel to Brandom
声明为可选而Brandom
有反向且非可选 rel(一对一)到Category
。这样,您就可以创建一个Category
,其中Brandom
为Brandom
,Category
{{1}}如果没有{{1}}则无法“生效”。
希望有所帮助。