使用谓词提取核心数据对象

时间:2012-04-20 10:02:28

标签: ios nspredicate

我有这样的模特 产品--->选项(一对多关系,无 - 无)

选项------->大小(一对一的关系,无反向)

选项-------> sold_out(属性,BOOLEAN)

现在我想获取所有产品的所有尺寸的所有尺寸的数组,其中option.sold_out为NO。

如何使用Predicates从Core Data中获取它而不是通过产品数组迭代选项

1 个答案:

答案 0 :(得分:1)

首先永远不要在核心数据中使用单向关系。您可能不会自己使用它,但Core Data需要它来引用完整性。

Why does an entity need an inverse?

现在,关于你的要求。你可以使用这样的东西。

request.entity = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:managedObjectContext];
request.prdicate = [NSPredicate predicateWithFormat:@"ANY option.sold_out == %@",[NSNumber numberWithBool: YES]];

更新

现在,需要反向的是你,因为没有大小---->选项关系,没有足够的方法来执行此请求。如果您有一个,我们称之为选项,您可以这样做:

request.entity = [NSEntityDescription entityForName:@"Size" inManagedObjectContext:managedObjectContext];
request.prdicate = [NSPredicate predicateWithFormat:@"option.sold_out == %@",[NSNumber numberWithBool: YES]];