我有两个实体:Cluster <-->> Photos
。
我需要选择所有带照片的群集,其中照片ID大于,即:
Cluster
1 Cluster1
2 Cluster2
Photos
1 Photo1 Cluster1
2 Photo2 Cluster2
3 Photo3 Cluster1
4 Photo4 Cluster2
即:获取包含照片的所有群集,其中photoId&gt; = 3.我希望有 Cluster1 - Photo3,Cluster2 - Photo4
目前,我正在尝试使用谓词Cluster
为ANY photos.id > 393614542
实体创建获取请求。它工作正常。
现在我正在尝试(NOT photos.id IN {393614542, 355088346}) AND photos.id >= 301213165 AND photos.id <= 393614542
,但我没有运气。
导致错误:to-many key not allowed here
我可以使用CoreData执行此类查询吗?
答案 0 :(得分:0)
您可以使用SUBQUERY为每个photo
“同时”测试几个条件:
NSPredicate *predciate = [NSPredicate predicateWithFormat:@"SUBQUERY(photos, $p, (NOT $p.id IN {393614542, 355088346}) AND $p.id >= 301213165 AND $p.id <= 393614542).@count > 0"];
或在Swift中:
let predicate = NSPredicate(format:"SUBQUERY(photos, $p, (NOT $p.id IN {393614542, 355088346}) AND $p.id >= 301213165 AND $p.id <= 393614542).@count > 0")