将对象添加到具有多对多关系的核心数据中的 NSSet

Posted

技术标签:

【中文标题】将对象添加到具有多对多关系的核心数据中的 NSSet【英文标题】:Adding an object to an NSSet in a Core Data with many-to-many relationships 【发布时间】:2012-04-07 16:07:38 【问题描述】:

我有一个包含餐厅和氛围的核心数据结构,其中一个餐厅可以有很多氛围,一个氛围可以有很多餐厅。所以我建立了两个多对多的关系,两者都是苹果文档中所述的逆向关系,形成了一个多对多的关系。

但是,我在将对象添加到创建的集合时遇到了麻烦。例如,当我使用这样的代码时,

Atmosphere *atmosphere = [Atmosphere atmosphere:aId inManagedObjectContext:context];
[restaurant addAtmospheresObject:atmosphere];

它因一个奇怪的错误而崩溃:

EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

请问有人遇到过吗?

【问题讨论】:

什么是大气 *atmosphere = [大气大气:aId inManagedObjectContext:context];?这不是有效的语法.. 我在 Atmosphere 实体中有一个类方法(使用类别)+(Atmosphere *)atmosphere:(NSNumber *)unique inManagedObjectContext:(NSManagedObjectContext *)context;它通过一个唯一的 id 字段从核心数据中获取一个 Atmosphere 对象 这个类方法后面的大气变量是非nil吗? 那是愚蠢的,不,不是!谢谢你的帮助! 为您的努力+1。 :-) 【参考方案1】:

看起来您没有正确创建 atmosphere 对象。试试这个:

Atmosphere *atmosphere = [NSEntityDescription 
   insertNewObjectForEntityForName:@"Atmosphere" 
            inManagedObjectContext:context];
// further configuration
if (restaurant) 
   [restaurant addAtmospheresObject:atmosphere];

【讨论】:

欢迎 - 也可以试试投票按钮...不要忘记勾选复选标记。

以上是关于将对象添加到具有多对多关系的核心数据中的 NSSet的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:获取特定对象的多对多关系中的所有实体?

如何仅将具有不同属性的对象添加到核心数据到多关系 NSSet

Swift核心数据多对多关系不保存实体

具有多对多关系的核心数据 - 在 SUBQUERY 中使用 ALL 创建 NSPredicate

具有多对多谓词的核心数据

通过 HTTP 导入核心数据,具有多对多关系