[英]Core Data Many-to-Many Relationship NSPredicate
我有一個具有多對多關系的數據模型,例如EntityA <-->> EntityB <<--> EntityC
。 我曾經使用不同的搜索條件查詢EntityA
,並且將NSCompoundPredicate
與NSPredicate
數組一起使用。 謂詞之一,我想查詢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.