Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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
Iphone CoreData基础知识&x2013;到多个关系数组数据_Iphone_Core Data - Fatal编程技术网

Iphone CoreData基础知识&x2013;到多个关系数组数据

Iphone CoreData基础知识&x2013;到多个关系数组数据,iphone,core-data,Iphone,Core Data,由于我对CoreData相当陌生,并且来自MySQL数据库背景,所以CoreData建模在某些方面有点难以理解。我相信你能帮我解决这个基本问题 CoreData模型描述符: 我的数据库模型基本上由两个实体组成。第一个称为“管理器”,第二个称为“Zipcodes”。“经理”有3个属性,目前可以忽略不计。在我看来,重要的是这里的关系被称为“zipcodes”。“Zipcodes”-实体有一个名为zip的属性,它是一个16整数。它还有一个关系,称为“manager” 不,我要说的是:每个经理都有多个

由于我对CoreData相当陌生,并且来自MySQL数据库背景,所以CoreData建模在某些方面有点难以理解。我相信你能帮我解决这个基本问题

CoreData模型描述符: 我的数据库模型基本上由两个实体组成。第一个称为“管理器”,第二个称为“Zipcodes”。“经理”有3个属性,目前可以忽略不计。在我看来,重要的是这里的关系被称为“zipcodes”。“Zipcodes”-实体有一个名为zip的属性,它是一个16整数。它还有一个关系,称为“manager”

不,我要说的是:每个经理都有多个zicode,负责所有的销售。现在的问题是,我已经设置了一个manager实体,并希望将多个ziplcodes链接到他。每个管理器的zipcodes用一个逗号分隔的字符串分隔。(1234556789,…)

首先,我要创建一个经理实体

Manager *manager = [NSEntityDescription insertNewObjectForEntityForName:@"Manager" inManagedObjectContext:self.managedObjectContext];
下一步是将所有zicode分离到一个数组中

Manager *manager = [NSEntityDescription insertNewObjectForEntityForName:@"Manager" inManagedObjectContext:self.managedObjectContext];

NSArray *zipcodesArray = [[dict objectForKey:@"zipcodes"] componentsSeparatedByString:@","];

for (NSString *zip in zipcodesArray) {
     ???
}
所以这就是我被困的地方。稍后,我必须通过搜索栏检查zipcodes,它们应该在数据库中分开。现在是否必须为每个zipcode创建managedObjectModel?如何将它们与“一个”经理实体连接起来?我确信有一种方法可以做到这一点,但我真的不知道如何做到

希望我的问题可以理解。如果你有什么想知道的,尽管问


谢谢你们

创建
Zipcode
的托管对象实例。将该对象的
zip
属性设置为
zipcodesArray
中字符串的值。完成后,将托管对象保存到数据存储中,检查错误,然后重复操作,直到完成邮政编码数组的所有步骤

for (NSString *zip in zipcodesArray) {
  NSManagedObject* zipcode = [NSEntityDescription insertNewObjectForEntityName:@"Zipcode" 
                                                  inManagedObjectContext:self.managedObjectContext];
  [zipcode setValue:zip forKey:@"zip"];
  [zipcode setValue:manager forKey:@"manager"];
}

通过在最后一行上建立从zipcode到manager的关系,Core Data将自动将zipcode插入到从manager到zipcode的关系中。

谢谢您的回答。但是如何将所有zipcode托管对象实例连接到manager托管对象?稍后,我应该能够搜索所有zipcodes并找到合适的经理。看起来edsko编写的代码与我的答案相当。看看,啊,反过来看。我总是觉得经理和zipcode有点像是个骗子。所以我想我必须从manager->zipcode建立连接。谢谢你的帮助!我真的很感激!顺便问一下,我可以在事后更新实体关系吗?实际上没有“事后”。每次设置zipcode的manager字段时,关系(在两个方向上)都会更新。顺便说一下,如果愿意,您还可以修改关系的另一端。在这种情况下,您需要执行
NSMutableSet*zipCodes=[manager mutableSetValueForKey:@“zipCodes]”
之后,您可以修改可变集以修改与管理器关联的邮政编码集(同样,zipcode与管理器的反向关系将自动设置)。