2010-08-04 69 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