CoreData 向实体行添加新关系

Posted

技术标签:

【中文标题】CoreData 向实体行添加新关系【英文标题】:CoreData Adding a new Relationship to an Entity row 【发布时间】:2010-11-18 15:25:18 【问题描述】:

那么问题来了:

我的项目有 2 个实体。第一个是组织,第二个是品牌。它们与一对多的关系相关联。 “一个组织可以拥有多个品牌” 一切都为此而努力。带有 Organization 和 Brandtableview 和 DetailView 的 Tableview。

我想要的是将收藏夹功能添加到我的应用程序中,我可以在其中将收藏夹列表与我喜欢的品牌联系起来。 因此,我将实体“收藏夹”添加到 xcdatamodel。每个 FavouriteList 都有一个 Name,并通过多对多关系连接到“Brands”。“一个 Favouritelist 可以有多个 Brands 和 Ebrands”可以在多个 Favouritelist 中。

创建一个新的List有以下代码

currentFav = (favoriten*)[NSEntityDescription insertNewObjectForEntityForName:@"favoriten" inManagedObjectContext:managedObjectContext];
[currentFav setName:@"MeineFavoriten"]; [self saveAction];

在 Brands 的 DetailView 中,我有一个 addToFav 操作,我想更新 Brands 中的 Brands 与 Favouritelist 的关系。

示例: “将名称为“XY”的品牌链接到收藏的 MeineFavouriten”

我该怎么做?

【问题讨论】:

【参考方案1】:

对多关系是集合,因此您可以使用简单的setValue 调用。相反,您首先必须获取一个可变集,将一个对象添加到该集中,然后将可变集设置为值。

NSMutableSet *favoriteBrands=[aFavoriteList mutableSetValueForKey:@"brands"];
[favoriteBrands addObject:aNewBrandObj];
[aFavoriteList setValue:favoriteBrands forKey:@"brands"];

如果您为 FavoriteList 创建一个类,您将获得一些方法,这些方法可以让您轻松地将对象添加到多对多关系中,而无需编写三行代码。

【讨论】:

以上是关于CoreData 向实体行添加新关系的主要内容,如果未能解决你的问题,请参考以下文章

向 coreData 中的实体添加浮点属性,并在每次添加新对象时递增它

使用一对多关系向 CoreData 添加新对象

数据插入上的核心数据级联

将数据添加到 CoreData

与此上下文的 CoreData SwiftUI 错误不同的 NSManagedObjectModel

Cocoa:CoreData - ManagedObjectContext 中的多个实体