【问题标题】:Core Data Self Referencing Entity with a One-to-Many Relationship具有一对多关系的核心数据自引用实体
【发布时间】:2011-11-18 21:43:16
【问题描述】:

这可能很简单,但我需要一点帮助。

我在 Core Data 中使用自引用实体来设置决策树。是否可以在自引用表上建立一对多关系?还是有更好的设置方法?

我遇到的问题是父节点对象被添加到引用子节点的 NSSet 中,当我将自引用关系设置为除一对一关系之外的任何内容时。当我将关系选择为“To-Many”时,似乎将其设置为多对多关系。

我已经能够通过设置一个一对一的关系和一个多对多的单独关系来解决这个问题,然后将一对一关系设置为父节点,但我无法设置反向关系。如果不设置反向关系,我会收到编译器警告。

非常感谢任何想法和想法!

【问题讨论】:

    标签: iphone ios core-data


    【解决方案1】:

    马特·W,

    首先,不要与 Core Data 争吵。你会输的。

    其次,请显示一些代码。我怀疑你可能没有像你想象的那样使用关系。

    第三,由于我对你的问题感兴趣,我写了一个关于你的树的简单例子。这是一些代码:

    自引用类:

    @interface ToMany : NSManagedObject
    
    @property (nonatomic, retain) NSDate * date;
    @property (nonatomic, retain) NSSet *children;
    @property (nonatomic, retain) ToMany *parent;
    @end
    

    使用该类且没有任何编译器错误的代码:

    ToMany *parent = [NSEntityDescription insertNewObjectForEntityForName: kToManyEntity 
                                                   inManagedObjectContext: self.managedObjectContext];
    parent.date = NSDate.date;
    
    ToMany *child1 = [NSEntityDescription insertNewObjectForEntityForName: kToManyEntity 
                                                   inManagedObjectContext: self.managedObjectContext];
    child1.date   = parent.date;
    child1.parent = parent;
    
    ToMany *child2 = [NSEntityDescription insertNewObjectForEntityForName: kToManyEntity 
                                                   inManagedObjectContext: self.managedObjectContext];
    child2.date   = parent.date;
    child2.parent = parent;
    

    我想我已经实现了您对问题的描述。你到底在担心什么?

    安德鲁

    【讨论】:

      【解决方案2】:

      我认为您的父母一对一设置很好。但是,孩子应该是一对多的,对吧?从逻辑上讲,这两种关系中的每一种都是彼此的反向关系。您应该能够在 Xcode 的数据模型编辑器中选择它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2014-05-13
        • 2017-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多