2013-07-25 61 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模型結構和關係名稱,方法和對象的名稱可能會有所不同。