Ios 核心数据和多对多关系
我有以下核心数据模型: 也就是说,每个ItemCategory属于Ios 核心数据和多对多关系,ios,core-data,Ios,Core Data,我有以下核心数据模型: 也就是说,每个ItemCategory属于项目(反向:类别),并且可以选择属于父ItemCategory(类别,反向子类别)-请忽略其余部分 问题是,显然我不能为ItemCategory同时设置项目和父类别。每次我设置一个关系时,另一个关系都设置为零。我尝试了删除规则的每一种组合,但似乎没有任何效果 是否存在我不知道的基本核心数据限制,或者我做错了什么?我将投票支持“做错了什么”。)我只是在一个项目中尝试了最简单的形式,一个ItemCategory,没有属性,没有其他实
项目(反向:类别),并且可以选择属于父ItemCategory(类别,反向子类别)-请忽略其余部分
问题是,显然我不能为ItemCategory同时设置项目和父类别。每次我设置一个关系时,另一个关系都设置为零。我尝试了删除规则的每一种组合,但似乎没有任何效果
是否存在我不知道的基本核心数据限制,或者我做错了什么?我将投票支持“做错了什么”。)我只是在一个项目中尝试了最简单的形式,一个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>"
); })
(lldb)po c1.category(ItemCategory*)$2=0x06b98bd0(实体:ItemCategory;id:0x6b98ee0;数据:{
类别=零;
项目=零;
子类别=(
“0x6b82280”
); })
(lldb)po c1.project(project*)$3=0x06b97a20(实体:project;id:0x6b97a70;数据:{
类别=(
“0x6b82280”
); })
不幸的是,这并没有揭示出什么可能是错误的,但它似乎并没有本质上的限制。两个实体之间可以存在多对多关系。重要的是,每种关系都有自己的反面。假设我们有实体A和B,我们希望它们之间有两对多的关系。你可以做到
我们先从
A <<----->> B
ab
你的A实体将有一个关系,我们称之为bs,与之相反,我们称之为as。到目前为止一切正常
但是,没有什么可以阻止您添加另一个关系:
<<----->>
A B
<<----->>
A B
对于第二个关系,我们将从A到B的关系命名为otherBs,其逆关系命名为otherAs
现在A与B有两种关系,即bs和otherBs。另一方面,关系也是如此