2010-09-11 58 views
1

我有一個Offer類(NSManagedObject子類),我想用它來處理爲購買而提供的優惠。每個提議的一方是買方,另一方是產品。還有一個價格。然而,這些可以是買家的類實例具有完全不同的血統,並且很可能會有不同的父類一直返回到NSManagedObject。產品也是如此。針對符合協議的類的NSManagedObject關係

因此,我不想讓這些項目將繼承的「買方」和「產品」抽象類。我寧願只是有「可購買」和「可購買」的協議,並有類實施他們如何購買,以及他們如何購買。不幸的是,似乎NSManagedObjects中的關係不允許你通過它們的協議來指定類。

任何方法?有人能讓我挺身而出嗎? Rob

回答

2

你不能指定一個協議,因爲上下文必須實例化一個實際的對象,並且協議不告訴上下文要實例化的類。例如。如果你告訴上下文來插入一個Buyer協議什麼子類實際上會創建?

這聽起來你實際需要的是子實體。您可以爲BuyerProduct創建抽象實體,然後將兩者都與Offer關聯。然後爲每個變體BuyerProduct創建一個子實體。實體不必添加新屬性,它們可以只有不同的名稱。這樣,Offer對象將接受其buyer關係中Buyer的任何子實體以及其product關係中的任何子實體Product

然後爲每個子實體分配一個不同的類來定製實體行爲。

這裏對你來說最關鍵的是類的繼承不必平行於實體繼承。您的類樹可能與實體樹完全不同。只要單個類映射到單個實體上,它就可以工作。

抽象實體本身就是很多協議定義。他們定義了一個實體必須具備的接口,但是它們本身並不執行任何操作

+0

完美答案,謝謝。搶 – rob5408 2010-09-14 18:03:11

0

我是新手,但我不認爲你在追求什麼是可能的。