2

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

category实体具有以下属性

:int

猫名:字符串

randomrelation :to-many rel 到随机实体

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

1 回答 1

2

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

关于您的标题问题,如果您询问是否必须为与关系链接的不同实体存储数据,答案是它取决于

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

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

关于您的模型的一些注释。

首先调用类名之类的实体,例如Category代替category,并采用驼峰式表示法。

其次,创建从Brandom到的反向关系Category。Inverse rels 允许您保持图形的一致性。在您的模型Category中有一个 to-many relBrandom声明为Optional并且Brandom有一个反向和非 Optional rel (一对一) to Category。这允许您创建一个Category具有零个或多个Brandom a没有 aBrandom就无法“生存”的Category.

希望有帮助。

于 2012-06-14T09:35:31.267 回答