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



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

Entityname = Country

属性为"城市"one_answers"人"。

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

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

我想在城市救一个以上的

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

如何在CoreData中保存一个以上的人员

希望你能帮助我。

解决问题的方法是:

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

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

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

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

试试这个代码。希望这能帮助你

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.,这样就可以实现。

最新更新