簡體   English   中英

CoreData,多對多關系和NSPredicate

[英]CoreData, many-to-many relationships and NSPredicate

我有一個包含多對多關系的CoreData數據模型。 事實證明,NSPredicate不支持多對多關系。 來自CoreData.pdf:“在謂詞中的密鑰路徑中只能有一對多元素。”

作為食譜的例子:許多食譜和許多成分。 配方可以有許多成分,其中“鹽”可以是一種,而“鹽”則用於許多配方中。 這是一種自然的多對多關系。

建議的解決方法是什么?
CoreData是個壞主意我應該回到SQLite嗎?

我的理解是,您可以通過添加中間實體將任意多對多關系轉換為單獨的一對多關系。

你有:
食譜有很多成分。
成分有很多食譜。

創建一個新的RecipeIngredient實體,以便:
食譜有許多RecipeIngredients。
成分有許多食譜成分。
RecipeIngredient有一個食譜和一個成分。

這個問題實際上讓我走錯了路,遇到了一個問題。 事實證明,您可以使用謂詞查詢多對多關系。 你只是不能像A <<-->> B <<-->> C那樣進一步查詢

我使用的謂詞(在Story <<-->> Team的模型中)就是這個......

[NSPredicate predicateWithFormat:@"SUBQUERY( teams, $t, $t IN %@ ).@count > 0", teams)];

此謂詞用於針對Story實體的獲取請求。 第二個“團隊”是我正在搜索故事的一組或一組團隊。 SUBQUERY格式對我來說有點混亂,所以我會注意到它可以被解讀為“對於當前故事的團隊集合中的每個團隊,看看它是否在其他集合(團隊)中。”

希望這可以幫助。

暫無
暫無

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

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