例如:我有一個實體,名爲Car
,它是抽象。然後有兩個子實體Cabriolet
和Pickup
。核心數據繼承:可以這樣做嗎?
現在我有一個實體名爲Driver
,它具有currentCar
1..1與實體Car
的關係。因此,我可以將Cabriolet或Pickup分配給任何駕駛員的currentCar屬性。然後,當我從驅動程序獲取currentCar時,我需要反思該對象以在運行時查找是否有Cabriolet或Pickup。這是否是Core Data中的有效設計?
例如:我有一個實體,名爲Car
,它是抽象。然後有兩個子實體Cabriolet
和Pickup
。核心數據繼承:可以這樣做嗎?
現在我有一個實體名爲Driver
,它具有currentCar
1..1與實體Car
的關係。因此,我可以將Cabriolet或Pickup分配給任何駕駛員的currentCar屬性。然後,當我從驅動程序獲取currentCar時,我需要反思該對象以在運行時查找是否有Cabriolet或Pickup。這是否是Core Data中的有效設計?
我不明白爲什麼這不會在技術層面上工作,但它確實違反了OOP多態性。
爲什麼你需要知道汽車的類型?您能否定義抽象超類(Car
)上的方法並在子類中適當地覆蓋它們(Cabriolet
和Pickup
)?您可以重構汽車層次結構,以便使子類的屬性變得更一般化,並將它們移動到Car
的屬性,從而消除對子類的需求?
從NSFetchResultsController
獲取從公共超類派生的對象時遇到問題。 (返回的對象只能通過實體的屬性進行排序/分組,類型不是屬性,所以不能用於對實體進行排序/分組。我的解決方案/破解是針對超類的type
屬性 - 醜陋的,但它工作。)
一輛敞篷車增加了一個BOOL hasElectricRoof。基本上問題是如果我拿到當前的汽車,並且我以前分配過敞篷跑車(也是一輛汽車),那麼我能夠將它投入敞篷車嗎?或者,Core Data不會獲取僅在Cabriolet中定義的屬性? – 2010-12-22 11:50:43