0

我建立了多对多的关系。起初我在表 1 中插入了所有数据,其余数据无法立即使用。

当数据可用时,我喜欢将其连接到正确的表 1 条目。我应该查询表 1,然后使用返回的数据设置 NSSet 吗?或者如何做到这一点?

在这里详细说明我的问题的例子:

[活动表] <<--->> [横幅表]

在 viewDidLoad 中,所有活动都在 ActivityTable 中更新。然后从服务器中找到来自第一个活动(第一个即将到来的日期)的横幅。

我有两个(总是两个)横幅可用,但我该如何设置呢?


在答案的帮助下使用它:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Banner" inManagedObjectContext:context];
Banner *banner = [[Banner alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
banner.image = shieldDictionary[BANNER_IMAGE];
4

2 回答 2

0

假设您正在为您的实体使用生成的 NSManagedObject 子类...

在您的 CoreData 模型中,每个关系都有一个名称。您生成的实体类已经包含添加/删除您在模型中定义的关系的方法。因此,您所要做的就是使用其中一种方法。

示例:如果表名为 'ActivityTable' 和 'BannerTable',而 'ActivityTable' 中的关系称为 'banners',则生成的方法如下所示:

- addBannersObject:(BannerTable *)value;
- removeBannersObject:(BannerTable *)value;
- addBanners:(NSSet *)value;
- removeBanners:(NSSet *)value;
于 2013-11-13T15:23:25.153 回答
0

Core Data 管理对象图,而不是表。

实现多对多关系的最简单方法是使用动态生成的访问器,例如add<Key>Object:and remove<Key>s:

例如:

[anActivity addBannerObject:aBanner];

您可以使用数据模型编辑器为您的模型生成声明这些生成方法的类文件。您还可以使用-mutableSetValueForKey:获取允许您在关系中添加和删除对象的代理。IE:

NSMutableSet *banners = [anActivity mutableSetValueForKey:@"banners"];
[banners addObject:aBanner];

It is obviously less verbose to use the generated methods for each relationship, but it achieves the same thing.

于 2013-11-13T15:24:07.150 回答