由于我是CoreData的新手并且来自MySQL-DB背景,因此CoreData Moddeling在某些方面很难理解。我相信你可以帮我解决这个基本问题。
CoreData模型描述符: 我的数据库模型基本上由两个实体组成。第一个叫做“Manager”,第二个叫做“Zipcodes”。 “经理”有3个属性,目前可以忽略不计。在我看来,重要的是这里称为“zipcodes”的关系。 “Zipcodes”-Entity有一个名为zip的属性,它是一个16 int。它也有一种关系,称为“经理”。
不,我会明白:每位经理都有多个zicodes,他负责所有销售。现在的问题是我已经设置了一个管理器实体,并希望将多个ziplcode链接到他。每个管理器的zipcodes分隔在一个逗号分隔的字符串中。 (12345,56789,...)
首先,我要创建一个Manager实体。
Manager *manager = [NSEntityDescription insertNewObjectForEntityForName:@"Manager" inManagedObjectContext:self.managedObjectContext];
下一步是将所有zicodes分离为数组。
Manager *manager = [NSEntityDescription insertNewObjectForEntityForName:@"Manager" inManagedObjectContext:self.managedObjectContext];
NSArray *zipcodesArray = [[dict objectForKey:@"zipcodes"] componentsSeparatedByString:@","];
for (NSString *zip in zipcodesArray) {
???
}
所以现在这就是我陷入困境的地步。后来我必须通过searchBar检查zipcodes,它们应该在数据库中分开。我现在必须为每个邮政编码创建一个managedObjectModel吗?如何将所有这些实体与“一个”经理实体连接起来?我确信有办法实现这一目标,但我真的不知道如何实现。
希望我的问题是可以理解的。如果您想知道任何事情,请随时提出。
谢谢你们!
答案 0 :(得分:3)
for (NSString *zip in zipcodesArray) {
NSManagedObject* zipcode = [NSEntityDescription insertNewObjectForEntityName:@"Zipcode"
inManagedObjectContext:self.managedObjectContext];
[zipcode setValue:zip forKey:@"zip"];
[zipcode setValue:manager forKey:@"manager"];
}
通过在最后一行建立从邮政编码到经理的关系,Core Data将自动负责将zipcode插入从经理回到邮政编码的关系中。
答案 1 :(得分:0)
创建Zipcode
的托管对象实例。将该对象的zip
属性设置为zipcodesArray
中字符串的值。完成后,将托管对象保存到数据存储区,检查错误,然后重复执行,直到完成整个邮政编码阵列为止。