2013-07-25 58 views
0

我甚至不知道这一次如何标题:插入一个实体到另一个

可以说我有一个生产实体和模型实体,具有一个一对多的关系。 每个制造商可以有多个型号(仅以这些为例)。

制造商有一个tableview和它独立的fetchedResultsController,然后当你按制造商单元格时,你去模型viewcontroller,也有它自己的tableview和fetchedResultsController,ofc显示相关的添加模型。

比方说,我想借此车型之一,并复制或将它们切成其他制造商,我在想一个方法的风格,如:

-(void)copyThis:(Model*)model toThat:(Manufacturer*)manufacturer 

我抓住正确的制造商对象和正确的模型对象,但我怎样才能实现插入到另一个?

回答

0

要复制

Model *newModel = [NSEntityDescription insertNewObjectForEntityForName:@"Model" inManagedObjectContext:self.context]; 
newModel.property = model.property; //For every property 
model.relationShipName = manufacturer; 
[self.context insertObject:copyModel]; 

为了削减

model.relationShipName = manufacturer; 

(我假设你有一个xcdatamodeld并生成您的型号及生产实体的NSManagedObjectSubclass)

+0

我不相信'NSManagedObject'符合'NSCopying',因此'[model copy]'可能无法工作。如果是这样,那么你会想在'copyModel'实例上设置'relationShipName'属性,而不是在'model'实例上。 – ikuramedia

+0

我相信copy是NSObject上的一个实例方法,因此每个对象都可以使用该方法。纠正我,如果我错了,虽然 – Kevin

+0

你是对的,我的道歉,更新了我的答案。 – Kevin

0

你想要什么实现与复制?你是否想要一个“新”模型,并将精确的参数添加到另一个制造商,或者你希望该关系与相同的模型对象?

假设你想保持Model对象的一个​​实例:

Manufacturer *fromManufacturer = ... 
Model *model = [[fromManufacturer models] objectAtIndex:...]; 
Manufacturer *toManufacturer = ... 

[toManufacturer insertModelObject:model]; 

if (isCut) [fromManufacturer removeModelObject:model]; 

自动获取到insertModelObjectremoveModelObject方法,你可以使用Xcode的自动生成NSManagedObject子类为您服务。当您查看CoreData Model文件时,它位于编辑器菜单下。请注意,根据您创建的CoredData模型结构和关系名称,方法和对象的名称可能会有所不同。