【问题标题】: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,并采用驼峰式表示法。

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

希望对您有所帮助。

【讨论】:

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