簡體   English   中英

核心數據多對多過濾

[英]Core data to-many filtering

我有兩個實體: Cluster <-->> Photos

我需要選擇所有帶有照片的群集,其中照片id大於,即:

Cluster
1 Cluster1
2 Cluster2

Photos
1 Photo1 Cluster1
2 Photo2 Cluster2
3 Photo3 Cluster1
4 Photo4 Cluster2

即:使用照片獲取所有群集,其中photoId> =3。我希望具有Cluster1-Photo3,Cluster2-Photo4

目前,我正在嘗試使用謂詞: ANY photos.id > 393614542Cluster實體創建獲取請求。 而且效果很好。

現在,我正在嘗試制作(NOT photos.id IN {393614542, 355088346}) AND photos.id >= 301213165 AND photos.id <= 393614542 ,但我沒有運氣。

導致錯誤: to-many key not allowed here

我可以使用CoreData執行此類查詢嗎?

您可以使用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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM