0

我有以下核心数据模型:

核心数据模型

也就是说,每个 ItemCategory 都属于project(reverse: categories),并且可以选择属于父 ItemCategory ( category, reverse subcategories) — 请忽略其余部分。

问题是,显然我不能同时为 ItemCategory 设置项目和父类别。每次我设置一个关系时,另一个关系设置为零。我已经尝试了删除规则的所有组合,但似乎没有任何效果。

是否存在我不知道的基本核心数据限制,或者我做错了什么?

4

2 回答 2

1

您可以在两个实体之间建立多对多关系。重要的是,每种关系都有自己的逆向关系。假设我们有实体AB,我们希望它们之间存在两个对多的关系。你可以这样做。

我们将从

A <<----->> B

的 A实体将具有我们称为bs的关系和我们称为as的逆关系。到目前为止一切正常。

但是,没有什么能阻止您添加另一个关系:

  <<----->>
A           B
  <<----->>

对于第二个关系,我们将从AB的关系命名为otherBs,并将其命名为otherAs

现在A与B有两个关系,即bsotherBs。反过来,关系也是如此。

于 2012-08-22T20:03:42.663 回答
0

我会投票赞成“做错事”。:) 我只是尝试了一个项目的最简单形式,一个 ItemCategory,没有属性,没有其他实体,他们自己的关系......它没有显示出这种症状。这个...

   Project *p = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
   ItemCategory *c1 = [NSEntityDescription insertNewObjectForEntityForName:@"ItemCategory" inManagedObjectContext:self.managedObjectContext];
   ItemCategory *c2 = [NSEntityDescription insertNewObjectForEntityForName:@"ItemCategory" inManagedObjectContext:self.managedObjectContext];
   c1.category = c2;
   c1.project = p;

...给...

(lldb) po c1.category (ItemCategory *) $2 = 0x06b98bd0 <ItemCategory: 0x6b98bd0> (entity: ItemCategory; id: 0x6b98ee0 <x-coredata:///ItemCategory/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E34> ; data: {
    category = nil;
    project = nil;
    subcategories =     (
        "0x6b82280 <x-coredata:///ItemCategory/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E33>"
    ); })
(lldb) po c1.project (Project *) $3 = 0x06b97a20 <Project: 0x6b97a20> (entity: Project; id: 0x6b97a70 <x-coredata:///Project/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E32> ; data: {
    categories =     (
        "0x6b82280 <x-coredata:///ItemCategory/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E33>"
    ); })

不幸的是,这并没有说明什么可能是错误的,但它似乎并不是天生的限制。

于 2012-08-21T23:49:01.243 回答