CoreData, many-to-many relationships and NSPredicate

前端 未结 2 1181
渐次进展
渐次进展 2021-01-01 06:28

I have a CoreData datamodel that includes a many-to-many relationship. As it turns out NSPredicate does not support many-to-many relationships. From CoreData.pdf: \"You can

相关标签:
2条回答
  • 2021-01-01 07:01

    This question actually led me down the wrong path with a problem I was having. It turns out you can query a many-to-many relationship with a predicate. You just can't query further down like A <<-->> B <<-->> C

    The predicate I used (in a model with Story <<-->> Team) was this...

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

    This predicate is used in a fetch request against the Story entity. The second "teams" is a set or array of teams I am searching for stories about. The SUBQUERY format is a bit confusing to me, so I'll note it can be read as, "For each team t in the current story's teams collection, see if it is in this other collection (teams)."

    Hope this helps.

    0 讨论(0)
  • 2021-01-01 07:04

    My understanding is that you can make any many-to-many relationship into separate one-to-many relationships by adding an intermediate entity.

    You have:
    Recipe has many Ingredients.
    Ingredient has many Recipes.

    Create a new RecipeIngredient entity such that:
    Recipe has many RecipeIngredients.
    Ingredients has many RecipeIngredients.
    A RecipeIngredient has one Recipe and one Ingredient.

    0 讨论(0)
提交回复
热议问题