簡體   English   中英

核心數據多對多關系NSPredicate

[英]Core Data Many-to-Many Relationship NSPredicate

我有一個具有多對多關系的數據模型,例如EntityA <-->> EntityB <<--> EntityC 我曾經使用不同的搜索條件查詢EntityA ,並且將NSCompoundPredicateNSPredicate數組一起使用。 謂詞之一,我想查詢EntityA使用EntityC 我嘗試使用下面的子SUBQUERY但是沒有用。

searchPredicate=[NSPredicate predicateWithFormat:@"(0 != SUBQUERY(EntityB, $B, (0 != SUBQUERY($B.EntityC, $EntityC, $EntityC.name like %@).@count)).@count)", name]

我有以下例外,

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:
'Can't perform collection evaluate with non-collection object.'

有什么我想念的嗎? 我將不勝感激任何幫助。

莎拉

(我很難為您的謂詞感到困惑,因此請帶一點鹽。)

我認為您使這一過程過於復雜。 您應該使用鍵路徑進行簡化。 每個EntityB與EntityC都有一對一的關系,因此要搜索EntityB對象,您需要做的只是檢查EntityB.entityCRelationshipName.entityCAttribute 所以像這樣:

ALL B.EntityC.name like %@

無論如何,(如果我正確地閱讀了謂詞)是這樣的:

SUBQUERY($B.EntityC, $EntityC, $EntityC.name like %@)

只能返回單個對象而不是集合。 因此,該謂詞將無法對其進行計數。 這就是您的錯誤消息的意思。

我建議在存儲謂詞之前,在數據模型編輯器中使用謂詞編輯器對哈希進行哈希處理。

暫無
暫無

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

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