我有以下核心数据模型:
也就是说,ach ItemCategory属于project
(反向:categories
),并且可以选择属于父ItemCategory(category
,反向subcategories
) - 请忽略其余的。
事实上,显然我无法为ItemCategory设置项目和父类别。每次我设置一个关系时,另一个关系设置为nil。我已经尝试了删除规则的每个组合,但似乎没有任何效果。
是否存在基本的核心数据限制,我不知道,或者我做错了什么?
答案 0 :(得分:1)
您可以在两个实体之间建立多对多关系。重要的是每个关系都有自己的反转。假设我们有实体 A 和 B ,我们希望它们之间有两对多的关系。你可以这样做。
我们将从
开始A <<----->> B
您的 A 实体会产生一种关系,我们将其称为 bs ,并将其称为 。到目前为止,一切都很正常。
但是,没有什么能阻止你添加另一种关系:
<<----->>
A B
<<----->>
对于第二种关系,我们将 A 与 B 之间的关系命名为 otherBs ,并将其与 otherAs <的关系命名为 /强>
现在 A 与 B 有两种关系,即 bs 和 otherBs 。而另一种方式则与关系相同。
答案 1 :(得分:0)
我会投票支持“做错事”。 :)我刚用Project,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>"
); })
不幸的是,这并没有说明 可能是错误的,但它本身并不是一种限制。