我有以下核心数据模型(例如简化):
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 实体是在不插入对象上下文的情况下创建的,因此在必要时很容易放弃插入。
然后用户可以选择数据库中可能存在或不存在的区域。执行搜索以查看 Region 是否存在
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;
}
最后,如果用户没有放弃插入,则将人对象插入到对象上下文中并保存
[self.objectContext insertObject:self.collectionItem];
处理嵌套对象(例如,区域可能存在或不存在于核心数据中的嵌套核心数据对象)的最佳方法是什么?示例或参考表示赞赏。