2010-08-04 64 views
1

我試圖實現使用核心數據和Objective C.Coredata:戰略模式實現

爲了簡化,我有,比如說,Strategy模式多語種Text實體,它有幾個屬性,如Date對於最後保存的,以及作者等的NSSString等。我想添加對Language實體的引用,該實體可以是幾個子類之一,例如FrenchItalian等等,其持有文字的NSString班級名稱。每個Language子類可以實現自己的translateTotranslateFrom方法和Text實例並不需要擔心。簡單的戰略模式。

Created by yuml.me http://yuml.me/1caedd69

我真的努力建立這種核心數據,在一定Text實體可以有自己的Language實現取決於實例的詳細信息設置的關係。

我想簡單地說,我想要做的是創建一個「有-α」關係,其中Text實體內的實體可以是Language的幾個子類型之一。

核心數據是相當新的給我,所以如果我完全缺少點這裏,還是錯過了一些東西昭然若揭,請讓我知道。

+0

btw:你用什麼來畫你的模型?像「粗略」的感覺 – falconcreek 2010-08-05 13:15:04

+0

我用http://yuml.me/diagram/scruffy/class/draw - 只是用Google搜索它對於這個問題 - 似乎相當不錯 – 2010-08-05 15:04:45

回答

3

你可以有抽象的實體。我會創建一個語言抽象實體,文本和語言之間的關係關係,以及語言的具體子實體,如意大利語,法語等。使用Xcode編輯器的示例:The Xcode editor showing a diagram much like the one in the original question http://files.droplr.com.s3.amazonaws.com/files/762938/1u3s2W.Screen%20shot%202010-08-05%20at%2010%3A50%3A57.png

然後,您將設置.language關係根據需要使用新的意大利文或法文文本NSManagedObject

+0

知悉與此概念的潛在的性能問題。作爲子實體的每個實體都將被放置在一個表中。因此,在這個例子中,意大利和法國人實際上會生活在同一張桌子裏,並且可能會創造大量的空白空間。 – 2010-08-05 17:05:36

+0

謝謝 - 原來我錯過的是實體上的父指定。在Xcode的新版本中,如何做到這一點似乎不是那麼明顯 - 回到Xcode 3上,它很好。再次感謝。 – 2010-08-06 06:35:53