【问题标题】:does not Core Data Automatically take care with inverse relationships核心数据不会自动处理反向关系
【发布时间】:2012-02-24 03:49:24
【问题描述】:

我有 3 个这样的实体:

抱歉,这张图片有问题,“周”实体的“日”关系应该是对多的,关系末尾应该有2个箭头

现在有两个问题。

第一。对于任何 Day-Class(NSManagedObject 的自定义子类)对象,在我处理好它的关系之后,例如:

Week* aWeek;
Day *aDay;
[aWeek addDayObject:aDay];

那么我可以通过Week Entity的“天”关系真正找到天,

但反过来,我发现Day对象“aDay”的关系“thisWeek”仍然是nil。

我听说在你创建了 NSMangedObject 的子类之后,你得到了类似

的方法
- (void)addXXXObject:(xxx)xxx

帮助您处理一对多关系,并自动处理反向关系。

但这里似乎没有。那我是不是得自己处理逆向关系呢,

或者如果核心数据确实提供了,我怎样才能让它自动添加对象上的反向关系?

第二。假设有许多“日”和一个“周”,通过它们的关系连接,

我想要的是,每次用户删除某一天时,我们都会检查该周是否还有一些相关的天,

如果有,就让用户删除那一天,

如果没有,我们也删除“Week”对象。

那么我应该使用多对多关系的删除规则是什么?

我对这些规则不是很清楚..

谢谢!

【问题讨论】:

    标签: ios one-to-many relationship nsmanagedobject inverse


    【解决方案1】:

    CoreData 实际上应该处理反向关系,只要您在两个实体中都定义了它。见here

    我会为 day->week 关系使用 nullify 删除规则,为 week->day 使用 cascade
    当您删除一周时,与之关联的所有日期也会被删除。
    当您删除一天时,它将从一周的天数中删除。当一周没有天时,您无法自动删除它。但是,如果self.days.count == 0,您可以观察星期几并删除self

    【讨论】:

    • 非常感谢!真的很有帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2012-04-22
    相关资源
    最近更新 更多