Mit Core-Daten möchte ich einige Daten abrufen. Mein Modell verwendet einige abstrakte Entitäten, siehe angehängtes Bild, wo QuantifiedIngredient eine abstrakte Klasse ist. Ich möchte Ingredient-Entitäten abrufen, die mindestens einen RecipeQuantifiedIngredients enthalten, aber in der Mitte ist QuantificationIngredient, eine abstrakte Klasse.
Wie kann ich das tun? Wie kann ich den tatsächlichen Typ einer abstrakten Klasse innerhalb eines NSPredicates testen? Irgendeine Idee oder Vorschlag?
Der einzige Hinweis, den ich gefunden habe, war: Wie können Sie den Namen der untergeordneten Entität in einem Prädikat für eine Abrufanforderung der übergeordneten Entität referenzieren?
Würde eine benutzerdefinierte Eigenschaft in meinem QuantifiedIngredient funktionieren, um zu wissen, ob es sich um einen RecipeQuantifiedIngredient handelt? Zum Beispiel isRecipeQuantifiedIngredient?
Vielen Dank für Ihre Hilfe.
Ich möchte mir nicht die Zeit nehmen, das in CoreData-speak zu übersetzen, also hier ist mein Gedanke in SQL:
%Vor% oder so ähnlich. Dies ist im Wesentlichen der Vorschlag von Nikita, eine Flagge zu verwenden, außer dass die "Flagge" die Existenz einer Eigenschaft ist. Ich weiß nicht, wie CoreData reagieren wird, wenn ich mit GroceryQuantifiedIngredients
konfrontiert werde, die nicht recipe
haben. Ich denke, KVO wird eine Ausnahme auslösen. Sie könnten so fett sein, um eine Kategorie hinzuzufügen:
Dies würde natürlich erfordern, dass CoreData alle quantifizierten Bestandteile aufzählt, aber ich nehme an, dass es dies sowieso tun muss, und ein return nil
sollte in winzigen Code optimieren. Die andere Überlegung ist, ob sich dies auf den Rest Ihres Codes negativ auswirkt. Sie müssen diesen Anruf tätigen.
Eine andere Idee, die mir in den Sinn kommt, wenn ich dies beende, ist, so etwas zu tun (ich bekomme wirklich jetzt mit meinem Pseudocode los):
%Vor%Sehen Sie, was ich meine? Ich vergesse, dass CoreData Sie mit einer Art von Cursor spielen kann, wenn Sie mit Prädikaten oder abgeholten Thingamabobbers arbeiten, wenn dies der Fall ist, dann denke ich, dass dies die beste Wahl ist. Jedenfalls ist es Sonntagnachmittag, so dass das Zeug als Übung für den Leser übrig bleibt.
+1 für eine gute Frage.
Wenn recipe
in RecipeQuantifiedIngredient
benötigt wird, könnten Sie versuchen, einen Abruf durchzuführen, der prüft, ob ingredient.recipe
vorhanden ist. Ich denke, das wird funktionieren.
Die benutzerdefinierte Eigenschaft, in Form von Flagge, wird auch für Sie arbeiten. Sie müssen es nur festlegen und aufheben, wenn Sie alle recipeQuantifiedIngredient
hinzufügen oder löschen.
Tags und Links nspredicate core-data ios5 nsfetchrequest