为多对多关系覆盖核心数据设置器方法

Posted

技术标签:

【中文标题】为多对多关系覆盖核心数据设置器方法【英文标题】:Override core data setter method for to-many relationship 【发布时间】:2012-11-04 12:16:39 【问题描述】:

我为我的核心数据结构覆盖了许多设置器,以将大部分“业务逻辑”保留在数据库中。为核心数据中的一对多关系覆盖 setter 方法的最佳方法是什么?对于称为“事物”的关系,setter 函数似乎包括:

- (void)addThingsObject:(Thing *)value;
- (void)removeThingsObject:(Thing *)value;
- (void)addThings:(NSSet *)value;
- (void)removeThings:(NSSet *)value;

我是否需要覆盖所有这四个函数?如何干净地做到这一点的最佳做法是什么?如果存在逆关系,我是否需要在设置器中执行任何操作以确保正确设置逆关系?

【问题讨论】:

【参考方案1】:

看看MoGenerator。它为核心数据中的每个实体创建两个类,您可以使用其中一个类编写自定义代码来管理实体。

【讨论】:

【参考方案2】:

根据我的经验,重写 xCode 为您创建的方法会限制您的可能性。 为您需要添加方法的每个类创建一个类别并仅添加您感兴趣的方法更易于维护。例如,如果您想替换一个对象,请添加一个@ 987654321@ 类中的方法。添加或删除也是如此,而不仅仅是替换。如果你不需要它们,仅仅为了跟进 xCode 生成的代码而全部实现它们会很疯狂......

【讨论】:

以上是关于为多对多关系覆盖核心数据设置器方法的主要内容,如果未能解决你的问题,请参考以下文章

多对多关系如何运作。

在 Sequelize.js 中为多对多关系添加默认角色

实体框架将纯连接查找表转换为多对多关系

为多对多关系形成、创建和更新视图

如何在 Rails 中为多对多关系(和中间表)做一个选择字段?

在 Django 中为多对多字段冲突反向访问器和查询?