如何检索核心数据中实体的唯一关系

发布于 2024-12-24 15:51:54 字数 546 浏览 2 评论 0原文

必须有一种更简单的方法来做到这一点。我搜索了又搜索,但似乎找不到我正在寻找的答案。

假设我们有这样的关系 EntityA<-->>EntityB

如果我创建 2 个 EntityA 实例,每个实例有 3 个实体 B 实例。

在我的视图控制器中,显示每个 EntityA 的所有 EntityB,它显示所有 6 个实体,而不是与其相关的 3 个实体。

我可以让它正确显示的唯一方法是将指针从一个控制器传递到另一个控制器:

viewController2.entityA = viewController1.entityA;

然后按以下方式检索结果:

    NSMutableArray *result = [[NSMutableArray alloc] initWithArray:[entityA.entityBs allObjects]];

我的印象是,如果您最初获取父实体,则后续的获取是以此为基础,而不是全部返回。

任何帮助将不胜感激。

There must be an easier way to do this. I have search and search but can't seem to find the answer I am looking for.

Let's say we have a relationship like this
EntityA<-->>EntityB

If I create 2 instance of EntityA with 3 instances of Entity B for each.

In my viewcontroller that displays all EntityB for each EntityA, it displays all 6 instead of the 3 related to it.

The only way I can get it to display correctly is if I pass a pointer from one controller to another:

viewController2.entityA = viewController1.entityA;

and then retrieve the results in the following manner:

    NSMutableArray *result = [[NSMutableArray alloc] initWithArray:[entityA.entityBs allObjects]];

I was under the impression that if you initially fetch a parent entity, the subsequent fetches are based on that rather than return all.

any help would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人疚 2024-12-31 15:51:54

尝试如下操作:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *weightEntity = [NSEntityDescription entityForName:@"EntityB" inManagedObjectContext:[[yourCoreDataManager sharedInstance] managedObjectContext]];
[fetchRequest setEntity:weightEntity];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"EntityA.name LIKE %@", @"EntityAName"]];

NSError *error = nil;
NSArray *result = [[yourCoreDataManager sharedInstance] managedObjectContext] executeFetchRequest:fetchRequest error:&error];

这样,您仅请求属于给定实体 A 的实体 B。

Try something like the following:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *weightEntity = [NSEntityDescription entityForName:@"EntityB" inManagedObjectContext:[[yourCoreDataManager sharedInstance] managedObjectContext]];
[fetchRequest setEntity:weightEntity];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"EntityA.name LIKE %@", @"EntityAName"]];

NSError *error = nil;
NSArray *result = [[yourCoreDataManager sharedInstance] managedObjectContext] executeFetchRequest:fetchRequest error:&error];

This way, you are only requesting for only those Entities B that belongs to a given Entity A.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文