用于获取实体的assosicate实体的谓词,其中关联实体的某个属性具有特定的字符串值

时间:2013-10-08 13:50:38

标签: ios core-data nspredicate

我的coredata中有目录和类别实体

他们有多对多的关系

我想获取字段categoryStatus =“active”并参与catalogue.categories的特定类别

什么是正确的谓词?

或没有提取> catalogue.categories categoryStatus = @“active”

c#equivelant of aCatalogue.categories.Where(c => c.categoryStatus ==“active”)

我尝试这样的事但没有运气

-(NSArray *) CategoryGetListWhereStatusActive4Catalogue:aCatalogue2DisplayCategories
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Category" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"([catalogues containsObject:%@) AND (categoryStatus == %@)" , aCatalogue2DisplayCategories, @"active"];
[fetchRequest setPredicate:predicate];

return [self performFetch:fetchRequest withContextObject:context];
}

2 个答案:

答案 0 :(得分:0)

这样的东西?

[NSPredicate predicateWithFormat:@"(ANY catalogues == %@) AND (categoryStatus == %@)",
           aCatalogue, @"active"]

答案 1 :(得分:0)

我认为这应该有效:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(catalogues, $catalogues, $catalogues == %@).@count>0) AND (categoryStatus == %@)" , aCatalogue2DisplayCategories, @"active"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY catalogues = %@) AND (categoryStatus == %@)" , aCatalogue2DisplayCategories, @"active"];