Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心数据和多对多关系_Ios_Core Data - Fatal编程技术网

Ios 核心数据和多对多关系

Ios 核心数据和多对多关系,ios,core-data,Ios,Core Data,我有以下核心数据模型: 也就是说,每个ItemCategory属于项目(反向:类别),并且可以选择属于父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”
); })

不幸的是,这并没有揭示出什么可能是错误的,但它似乎并没有本质上的限制。

两个实体之间可以存在多对多关系。重要的是,每种关系都有自己的反面。假设我们有实体AB,我们希望它们之间有两对多的关系。你可以做到

我们先从

A <<----->> B
ab
你的A实体将有一个关系,我们称之为bs,与之相反,我们称之为as。到目前为止一切正常

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

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

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

现在AB有两种关系,即bsotherBs。另一方面,关系也是如此