Der Grund, warum Sie keine ähnlichen Beispiele wie Ihre RecipeIngredient
Entität gesehen haben, ist, dass Sie keine gemeinsamen Entitäten wie diese in Core Data benötigen. Sie behandeln Core Data wie eine relationale Datenbank, in der Sie normalerweise eine Join-Tabelle verwenden, um effiziente Viele-zu-Viele-Beziehungen zwischen Entitäten zu erstellen. Wie in der Many-to-Many Relationships Unterabschnitt der Core Data Programming Guide, mit Core-Daten, alles, was Sie tun müssen, ist nur eine to-viele Beziehung in beide Richtungen zwischen zwei Entitäten anzugeben. Beachten Sie die Bemerkung in der Dokumentation:
(Wenn Sie einen Hintergrund in der Datenbank-Management haben und dies bewirkt, dass Sie Sorge, keine Sorge: Wenn Sie einen SQLite-Speicher zu verwenden, Core Data erstellt automatisch die Zwischen beitreten . Sie Tabelle)
Hier ist eine Darstellung der Beziehung, wie Sie es modellieren sollte, riss gerade von Xcode Modelleditor:
Wenn Sie immer noch Beispiele sehen möchten, wie Sie dies tun, suchen Sie nach "Core Data viele zu vielen Beziehungen" und Sie werden genug finden. Sie könnten hier auf StackOverflow starten; Eine schnelle Suche ergab eine Reihe von Beispielen, einschließlich How do you manage and use "Many to many" core data relationships?.
Aktualisierung: Von Ihrem Kommentar verstehe ich, dass Sie ein Zwischenobjekt verwenden möchten, um Informationen über die Beziehung zwischen Rezepten und Zutaten hinzuzufügen. Das ist ein Fall, in dem eine andere Entität garantiert ist. Also lassen Sie uns sagen, Ihr Modell sieht wie folgt aus:
Es scheint unwahrscheinlich, dass Sie eine dieser RecipeIngredient
Objekte holen wollen würde direkt; Du würdest wahrscheinlich einfach der entsprechenden Beziehung folgen. Sie können also eine Abrufanforderung erstellen, um alle Rezepte zu finden, deren Name mit @ "Schokoladenkuchen" übereinstimmt. (Es gibt viele Beispiele für Abrufanforderungen, die ein Prädikat in den Dokumenten und im gesamten Netzwerk verwenden. Daher werde ich das hier nicht tun.) Ihre Abrufanforderung gibt ein Array mit Rezepten zurück, die wir aufrufen könnten: cakeRecipes
, aber Sie sind wahrscheinlich nur an einem interessiert:
Recipe *cake = cakeRecipes.firstObject;
Nun, was möchten Sie über die Zutaten für Ihren Kuchen wissen? Hier ist eine Liste der Zutaten:
NSArray *ingredientNames = cake.ingredients.ingredient.name;
Wenn Sie die Zutat Namen und Beträge möchten log:
for (RecipeIngredient *i in cake.ingredients) {
NSLog(@"%@ %@", i.amount, i.ingredient.name);
}
Oder man könnte eine Anfrage holen verwenden, um die Zutaten matching „Sellerie“ zu finden Speichern des Ergebnisses in celeries
.Danach könnten Sie für Rezepte mit Sellerie aussehen:
Ingredient *celery = celeries.firstObject;
NSArray *recipes = celery.recipes.recipe
Wenn dies nicht hilft, vielleicht könnten Sie über das Problem genauer sein. Außerdem weiß ich, dass du nach Swift gefragt hast, aber meine Finger sind immer noch an Obj-C gewöhnt, und die Sprachspezifikationen spielen hier keine Rolle - Core Data funktioniert in beiden Sprachen gleich.
Was ist es, dass Sie nicht verstehen, und dass Sie hoffen, von einem Beispiel lernen? –