如何在实体中保存多个人(CoreData)

时间:2012-03-23 12:04:24

标签: ios xcode core-data

我有一个看起来像这样的实体:

Entityname = Country

属性为“city”和“person”。

Country *country = [NSEntityDescription insertNewObjectForEntityForName:@"Country" inManagedObjectContext:context];


    country.city = @"New York";
    country.person = @"Doug";
    country.person = @"Carry";
    country.person = @"Arthur";

我想在城市中保存多个

我正在使用上面发布的代码,但只保存了最后一个人。

如何在 CoreData 中保存多一个

希望你能帮助我。

3 个答案:

答案 0 :(得分:2)

解决问题的方法是:

  1. 创建 3个实体国家/地区城市
  2. 使用XCode的图形工具设置实体的属性(例如Country.name,City.name,Person.name等)
  3. 设置实体之间的关系。你需要来自Country的一对多 - >城市[称之为城市]和来自城市的一对多 - >人[称之为人](有关此主题,请参阅Apple's documentation)。请记住,您还需要设置反向关系。
  4. 这就是所有乐趣开始的地方......选择编辑器>创建NSManagedObject子类。然后Xcode将根据您的模型生成文件。现在,如果查看头文件,您应该在生成的方法中看到与此类似的内容:
  5. ...

    - (void)addPersonObject:(Person *)value;
    - (void)removePersonObject:(Person *)value;
    - (void)addPersons:(NSSet *)value;
    - (void)removePersons:(NSSet *)value;
    

    ...

    从这一点可以很明显地弄清楚如何添加多个对象:) 我知道这一切看起来似乎很难,但是一旦你了解到这一点,你将能够轻松高效地管理复杂的对象图。 我希望这些信息能让你走上正轨!

答案 1 :(得分:0)

您需要创建一个数组,其中包含您需要保存到核心数据模型的所有人员。

答案 2 :(得分:-1)

试试这段代码。希望这会对你有所帮助

yourArray = [[NSMutableArray alloc]initWIthObjects:@"Doug",@"Carry",@"Arthur"];

for(int i = 0; i < [yourArray count]; i++)
{
    NSManagedObjectContext *context = [self managedObjectContext];
    countryObject=[NSEntityDescription
                              insertNewObjectForEntityForName:@"Country" 
                              inManagedObjectContext:context]; 
    countryObject.city = @"New york";
    countryObject.people = [NSString stringWithFormat:@"%@",[yourArray objectAtIndex:i]];
    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
    }
}

<强>更新

你解释说你不需要三个不同的实例,然后

这可以通过为CityPeople创建单独的实体来完成,然后将它们之间的关系设为to-many relationship.这样您就可以实现这一目标。