首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体如何继承递归模型结构中的属性?

实体如何继承递归模型结构中的属性?
EN

Stack Overflow用户
提问于 2018-04-11 10:17:13
回答 1查看 39关注 0票数 0

我在这里有一个与这个帖子相同的结构:How do I create a recursive one-to-many relationship using core data?

看起来是这样的:

代码语言:javascript
复制
    cage ---------- animal 1
             |
             |_____ animal 2
             |
             |_____ animal 3 ____ animal 4
                              |
                              |__ animal 5
                                      |
                                      |_____ animal 6

我实现了我的模型,就像正确的答案一样,

对我来说,问题是,使用这种结构,只有animal 1有一个非零属性cage,但是我希望所有的后代动物都有这个属性cage,以便我可以查询笼子属性animal6.cage

我试过手动设置这个,但是相反的关系会导致任何具有笼子属性的动物都是那个笼子的直接子级,而我不想这样做。

每只动物都有可能继承笼子的财产吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 15:04:27

在使用“继承”和“子”这样的术语时,对核心数据没有任何意义。您有Cage,它与Animal相关。Animal与自身有一种联系。

就核心数据而言,这里没有父/子关系或继承。如果一个Animal与另一个相关,则它们只是两个具有关系的实例。一个不能从另一个继承一个值,因为其中一个不是Core数据使用的任何意义上的“父”。这两个实例是两个独立的对象,它们不会继承任何非核心数据对象所继承的任何东西。

在此之后,设置cage属性并不能使Animal成为笼子的“直接子”,它只是说它与笼子有关。如果您想在不对每个实例设置cage的情况下为任意Animal查找cage,则需要执行以下操作(Swift伪代码):

代码语言:javascript
复制
func cage(for animal:Animal) -> Cage {
    var currentAnimal = animal
    var cage = currentAnimal.cage
    while cage == nil && currentAnimal.parent != nil {
        currentAnimal = currentAnimal.parent
        cage = currentAnimal.cage
    }
    return cage
}

如果你只想为一只动物找到笼子,那就好了,但你不能在获取请求中使用它。如果您需要在抓取时可以使用的东西,您可能需要添加第二个关系从AnimalCage,以便您可以区分“父”动物与任何其他动物。每个Animal都有一个关系的值,而另一个关系将保留给父关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49772456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档