2011-11-26 124 views
18

我是核心數據建模的新手,我很難理解一對多關係如何工作。CoreData - 一對多建模關係以一對一形式出現

我有一個叫做Task的父實體,它可以有多個Comment實體的實例。我將其模擬爲:在Comments上,與Task的關係稱爲task,其中Task實體爲目的地。在Task上,稱爲comments的關係,其中Comment作爲其目的地,並且兩個關係彼此相反。

未定義逆函數會導致警告或錯誤消息。雖然這種方式建模的作品,我注意到,一旦我爲給定的Task創建第二個評論,第一個被替換(一對一關係)。

什麼是正確的方式告訴核心數據模型,這種關係允許在一個Task許多意見?

此外,由於CoreData似乎自行管理主鍵,我將如何創建NSPredicate來檢索給定任務的所有註釋?

感謝您的任何建議!

回答

42

首先你需要設置在Task實體plural選項,在您的​​選擇它,然後選擇Task實體來commentsrelationship屬性,你應該能夠看到這個enter image description here

有一個plural選項一定要檢查出來。如果您使用生成的類以及您使用的sqlite商店,則必須重新創建您的NSManagedObject,您必須刪除並重新生成,以便它不會抱怨新模式與舊模式不一樣。

要檢查您是否有一對多的關係,您的Task實體應該有一個名爲comments的屬性,它是一個NSSet的類類型的非評論。

如果您想檢索給定任務的所有註釋,則需要重複執行該任務的NSSet(comments)屬性。

+0

謝謝!我甚至不知道這些選項是可用的。我想我一直在關閉右窗格的情況下編輯我的模型。我目前不使用生成的類,而是測試Core Data如何命名setter和getters(以及關係)。 – tutiplain