Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - (NSManagedObject*)copyObject:(NSManagedObject*)object
- toContext:(NSManagedObjectContext*)moc
- parent:(NSString*)parentEntity;
- {
- NSString *entityName = [[object entity] name];
- NSManagedObject *newObject = [NSEntityDescription
- insertNewObjectForEntityForName:entityName
- inManagedObjectContext:moc];
- [[self lookup] setObject:newObject forKey:[object objectID]];
- NSArray *attKeys = [[[object entity] attributesByName] allKeys];
- NSDictionary *attributes = [object dictionaryWithValuesForKeys:attKeys];
- [newObject setValuesForKeysWithDictionary:attributes];
- id oldDestObject = nil;
- id temp = nil;
- NSDictionary *relationships = [[object entity] relationshipsByName];
- for (NSString *key in [relationships allKeys]) {
- NSRelationshipDescription *desc = [relationships valueForKey:key];
- NSString *destEntityName = [[desc destinationEntity] name];
- if ([destEntityName isEqualToString:parentEntity]) continue;
- if ([desc isToMany]) {
- NSMutableSet *newDestSet = [NSMutableSet set];
- for (oldDestObject in [object valueForKey:key]) {
- temp = [[self lookup] objectForKey:[oldDestObject objectID]];
- if (!temp) {
- temp = [self copyObject:oldDestObject
- toContext:moc
- parent:entityName];
- }
- [newDestSet addObject:temp];
- }
- [newObject setValue:newDestSet forKey:key];
- } else {
- oldDestObject = [object valueForKey:key];
- if (!oldDestObject) continue;
- temp = [[self lookup] objectForKey:[oldDestObject objectID]];
- if (!temp && ![destEntityName isEqualToString:parentEntity]) {
- temp = [self copyObject:oldDestObject
- toContext:moc
- parent:entityName];
- }
- [newObject setValue:temp forKey:key];
- }
- }
- return newObject;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement