2011-07-15 48 views
2

我有一個實體mainEntity具有三個一對多關係到三個不同的實體entity1,entity2和entity3(關係以它們指向的對象命名)。如何設置核心數據實體的對象關係

entity mainEntity 
attribute name 
relation entity1 
relation entity2 
relation entity3 

這三個實體都有一個一對多這個mainEntity反向關係(都一樣,這裏的第一個例子)。

entity entity1 
attribute name 
relation mainEntity 

總的來說,它是從一個mainEntity開始的三對多關係。

現在我需要將mainEntity的三個關係設置爲object1,object2和object3,它們是實體1,實體2和實體3的實例。對於一對多的關係 不可接受類型的值:

我不能做到這一點:

MainEntity *myEntity = (MainEntity *)[NSEntityDescription 
insertNewObjectForEntityForName:@"myEntity" inManagedObjectContext:context]; 
[myEntity setEntity1:object1]; 
[myEntity setEntity2:object2]; 
[myEntity setEntity3:object3]; 

控制檯說財產=「使用實體」;期望的類型= NSSet;

如何正確設置它們?

回答

2

這聽起來像你試圖分配一個單一的實體到一對多的關係。如果您只打算使用entity1entity2entity3每次指向一個實體,則解決此問題的最簡單(正確)方法是將這些關係從一對多更改爲一對一。但是,如果你希望每個這些是一個一對多的關係,我將取代

[myEntity setEntity1:object1]; 
[myEntity setEntity2:object2]; 
[myEntity setEntity3:object3]; 

具有以下自動生成的一對多關係mutator方法

[myEntity addEntity1Object:object1]; 
[myEntity addEntity2Object:object2]; 
[myEntity addEntity3Object:object3]; 

欲瞭解更多信息,檢查Managed Object Accessor MethodsCore Data Programming Guide

+1

即你告訴我們你的話他們是 - 許多關係,你告訴我們你的代碼他們是1關係, - - 我們假設你的話是正確的,你想爲你的多個entity1對象mainEntity – bshirley

+0

沒錯。當然,如果是這樣的話,我會親自將關係重新命名爲「firstEntities」,「secondEntities」,「thirdEntities」或其他類似的複合形式的組合。 –

+0

你知道嗎,你實際上做了什麼讓我意識到我需要一個一對多的關係而不是實體,而是實體。謝謝。所以我做了一些其他的事情。 – Mantvydas

相關問題