【问题标题】:Is it is mandatory to store both entities data when storing in core data? [closed]存储核心数据时是否必须存储两个实体数据? [关闭]
【发布时间】:2012-06-17 05:40:04
【问题描述】:

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

category实体具有以下属性

catid:int

猫名:字符串

随机关系:与品牌实体的多相对关系

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

【问题讨论】:

  • 对不起,我不明白你的问题。你问的是什么?你能解释一下吗?
  • 我有两个实体第一个一个类别第二个 qrandom,类别与 qrandom 之间的关系是多对多,从 qrandom 到类别是一对多,我在问,如何存储数据?

标签: ios xcode cocoa-touch core-data


【解决方案1】:

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

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

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

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

关于您的模型的一些说明。

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

其次,创建从Brandom 到Category 的反向关系。 Inverse rels 允许您保持图形的一致性。在您的模型中,Category 与 Brandom 有一个对多 rel 声明为 Optional 并且 Brandom 有一个反向和 非可选 rel(一对一一)到Category。这允许您创建一个具有零个或多个 Brandom 的 Category但如果没有 Category,Brandom 将无法“存活”。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 2011-01-06
    • 2012-04-03
    相关资源
    最近更新 更多