我有以下核心数据模型(例如简化):
Person
->Address
City
>Region
RegionName
>Country
CountryName
创建新人时
NSManagedObjectModel *objectModel=[[AppCoreData sharedInstance]objectModel];
NSEntityDescription *entity=[[objectModel entitiesByName] valueForKey:@"Beverage"];
Person *person=(Person*)[[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:nil];
创建一个Person实体,无需插入对象上下文,因此在必要时可以轻松放弃插入。
然后,用户可以选择数据库中可能存在或可能不存在的区域。执行搜索以查看区域是否存在
NSEntityDescription *entityDescription=[NSEntityDescription entityForName:@"Region" inManagedObjectContext:self.objectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
request.returnsObjectsAsFaults=NO;
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"id == %@",region.id];
[request setPredicate:predicate];
NSError *error=nil;
NSArray *array= [self.objectContext executeFetchRequest:request error:&error];
if ([array count] == 1) {
//use existing object
person.region=(Region*)[array objectAtIndex:0];
} else {
//create new object
NSEntityDescription *entity=[[objectModel entitiesByName] valueForKey:@"Region"];
self.collectionItem.beverage.region=(Region*)[[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:nil];
person.region.id=[NSNumber numberWithInt:[regionID intValue]];
person.region.regionName=regionName;
}
最后,如果用户没有放弃插入,则将person对象插入到对象上下文中并保存
[self.objectContext insertObject:self.collectionItem];
处理嵌套对象(例如,区域可能存在或可能不存在于Core Data中)的嵌套Core Data对象的最佳方法是什么?赞赏的例子或参考文献。