【问题标题】:Core Data: Traverse managed objects relationships with an abstract entity in-between核心数据:通过中间的抽象实体遍历托管对象关系
【发布时间】:2012-10-23 05:34:09
【问题描述】:

我有以下核心数据模型,其中ProFormaPeriod抽象实体 FiscalPeriod 的子类。在我的获取请求中,我想从CalendarPeriod 遍历到IBEstType

我该如何做到这一点,因为 fiscalPeriod 是我在代码完成中获得的唯一关系,而不是 ProformaPeriod

我是否需要建模从CalendarPeriodProformaPeriod 的额外直接关系?

【问题讨论】:

    标签: objective-c ios model-view-controller database-design core-data


    【解决方案1】:

    一种方法是获取FiscalPeriod 并遍历结果以检查正确的类并过滤出正确的 IBEstType(s)。与谓词中的直接键路径相比,它应该仍然非常有效,具体取决于数据的大小。

    否则,是的,您必须使子实体成为直接关系。

    检查类:

    for (NSManagedObject *obj in fetchedFiscalPeriods) { 
        if ([obj isKindOfClass:[ProformaPeriod class]]) {
            ProformaPeriod *period = (ProformaPeriod*) obj;
            // check period.estimateType
        }
    }
    

    【讨论】:

    • 感谢您的回答!您能否解释一下如何检查正确类的获取请求的结果?
    • 我认为可以直接在提取请求的谓词中检查类或实体。
    • 也许这是可能的,但我不知道如何进一步向下遍历。如果您想走谓词路线,请建立直接关系(它不会花费您任何费用并且非常高效;而且我认为这也更有意义,因为 FiscalPeriod 是抽象的)。 -- 遍历是标准做法。这并不意味着它将所有对象都提取到内存中 - 只是对象图,所以不用担心。
    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多