NSPredicate在很多很多关系中

时间:2012-10-10 23:15:54

标签: objective-c ios core-data nspredicate

我有以下实体关系A<< - >> B,好吗? 现在,在应用程序的生命周期中,我有两个类型为A的对象,我想知道包含这些对象的B的所有对象......

我尝试过...任何aRelationWithA.att == objectA1.att ...在B实体上,但是,另一个对象呢?我找到了一个SUBQUERIES解决方案,但是结果相同,因为有一个... SUBQUERY(aRelationWithA,$ object,$ object.att == objectA1.att)...,但是,再一次,另一个对象怎么样??< / p>

我需要包含这些关系中的A对象的B对象A&lt;&lt; - &gt;&gt; B,问候!

3 个答案:

答案 0 :(得分:0)

暂时我使用了两个NSPredicates来验证这个条件......

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"B"];
propertyRequest.predicate = [NSPredicate predicateWithFormat:@"ANY aRelationWithA.att == %@", objectA1.att];
NSError *error;
NSArray *collection1 = [context executeFetchRequest:request error:&error];
NSArray *collection2 = [collection1 filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ANY aRelationWithA.att == %@", objectA2.att]];
if (collection2.count) NSLog(@"There are some objects with that condition");

感谢您的回复或一些参考,以了解有关此主题的更多信息!

答案 1 :(得分:0)

尝试使用此谓词

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY aRelationWithA in %@", [NSArray arrayWithObjects:objB1, objB2, nil]; 

答案 2 :(得分:0)

这很简单:

NSFetchRequest *r = [NSFetchRequest fetchRequestWithEntityName:@"B"];
[r setPredicate:[NSPredicate predicateWithFormat:@"ANY relationshipToA = %@ OR ANY relationshipToA = %@", objectA1, objectA2]];