2016-08-19 84 views
0

我建立一个IOS应用程序,我有以下问题类的关系:CoreData和实施协议

我说一类Animal含有类CatsDogs。这些类别又分为DomesticCats,WildCats(分别为DomesticDogs,WildDogs),其中包含猫和狗的物种,其中一些是家养动物,而另一些则不是。

我有另一个类PetOwner其中将包含一个对多关系petsSet要么DomesticCatsDomesticDogs的情况下,反比关系是owner

有没有在我的应用的CoreDate模型中建立这种关系的方法? 它不是CoreData我会定义一个协议<DomesticAnimal>DomesticCatsDomesticDogs将实现,包含(其他)属性owner,但我不认为我可以将它与CoreData模型混合?

或者我需要在我的CoreData模型来创建一个一对多的关系形式PetOwnerAnimal,但我可以强制执行,只有实现<DomesticAnimal>类将永远被添加到PetOwnerpetsSet

回答

0

我建议一个可以使管理数据变得更简单的方法。

添加一个新的实体,并命名为AnimalType,一个字符串属性,你可以添加类型的“国内”和“野”,并将其与实体Animal或许命名为typeAnimal,其倒数将作为一段关系实体Animal中的关系,可能名称为animalType

这样每个实体Animal可以有一个“家庭”或“野生”类型。

然后,当您需要仅包含“家养”动物的数据集时,您可以对实体Animal运行提取,其谓词设置为animalType = "domestic"