将一个实体插入另一个实体

时间:2013-07-25 23:47:31

标签: ios core-data entity nsfetchedresultscontroller

我甚至不知道如何标题这个:

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

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

假设我想采用其中一个模型并将其复制或切割成另一个制造商,我正在考虑一种方法,如:

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

我正在抓住正确的制造商对象和正确的模型对象但是如何实现彼此插入?

2 个答案:

答案 0 :(得分: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并且已经生成了Model和Manufacturer实体的NSManagedObjectSubclass)

答案 1 :(得分:0)

你想通过复制实现什么目标?您是否想要一个具有确切参数的“新”模型添加到其他制造商,或者您是否希望关系与同一模型对象相关?

假设您要保留Model对象的单个实例:

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

[toManufacturer insertModelObject:model];

if (isCut) [fromManufacturer removeModelObject:model];

要自动获取insertModelObjectremoveModelObject方法,您可以使用Xcode自动为您生成NSManagedObject个子类。当您查看CoreData Model文件时,它位于Editor菜单下。请注意,方法和对象的名称可能会有所不同,具体取决于您创建的CoredData模型结构和关系名称。