我有一个看起来像这样的实体:
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中保存一个以上的人员?
希望你能帮助我。
解决问题的方法是:
- 创建3个实体:国家、城市和个人
- 使用XCode的图形工具设置实体的属性(例如Country.name、City.name、Person.name等)
- 设置实体之间的关系。你需要一个来自国家->城市[称之为城市]的一对多和一个来自城市->个人[称其为个人]的一比多(请参阅苹果关于此主题的文档)。请记住,您还需要设置反向关系
- 这就是所有乐趣的开始。。。选择编辑器>创建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]);
}
}
更新:
在您解释您不需要三种不同的仪器后,然后
这可以通过为City
和People
创建一个单独的实体来实现,然后将它们之间的关系设置为to-many relationship.
,这样就可以实现。