2012-01-04 124 views
2

必须有一种更简单的方法来完成此操作。我有搜索和搜索,但似乎无法找到我正在寻找的答案。如何检索核心数据中实体的唯一关系

比方说,我们有这样 EntityA <的关系 - >> EntityB

如果我创建为每个实体B的3个实例EntityA 2实例。

在我的viewcontroller中显示每个EntityA的所有EntityB,它显示全部6个而不是与它相关的3个。

我可以得到它,以正确显示的唯一途径是如果我通过指针从一个控制器到另一个:

viewController2.entityA = viewController1.entityA; 

,然后检索以下面的方式的结果:

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

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

任何帮助,将不胜感激。

+0

一般来说这些实体B,通过entityA的实例的第二个视图控制器,然后使用它的entityBs属性来获取值(就像你在代码中一样)将是最好的方法来解决这个问题。 – 2012-01-04 22:23:38

回答

2

尝试类似如下:

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.

+0

这意味着我必须在查询字符串(@“decision.decisionName LIKE%@”,@“DecisionX”)中明确说明EntityAs属性“name”的值。对? – hafizito 2012-01-05 01:02:32

+0

如果你有一个名称属性,这只是一个例子,你可以使用一个ID或任何东西来区分你的A实体,但是,你可以将这个数字/字符串传递给新的视图控制器,并以这种方式进行。 – ferostar 2012-01-05 01:35:52

相关问题