2012-04-14 13 views
0

Ich fange an, Core Data zu verwenden, und ich versuche, ein solides Verständnis davon zu bekommen, wie es in meinem Fall funktionieren würde. Ich erstelle eine iPad-Fotoalbum-App, mit der Nutzer ihre Ergebnisse basierend auf Keywords und einigen anderen Attributen filtern können, die mit jedem Foto verknüpft sind. Die Attribute wären grundlegende Dinge wie Orientierung und ob ihre Farbe oder nicht. Schlüsselwörter basieren auf einer Reihe von definierten Werten, aus denen der Benutzer auswählen muss.CoreData -zu vielen Beziehungen

Hier ist eine grobe Skizze von dem, was ich in den Core Data Model haben bisher:
Entities (Attribute):
Fotos (id, Titel, desc, Dateipfad)
Keywords (id, Name)

Da ein Foto mit mehreren Keywords verknüpft sein kann, erstelle ich eine Beziehung von 'Fotos' mit dem Ziel 'Keywords' und mache daraus eine - zu viele Beziehung? Ist das richtig/verrückt/völlig falsch? Wie würde ich Datensätze für diese Beziehung hinzufügen/abrufen?

Antwort

1

Das ist richtig. Es gibt mehrere Ansätze, um auf diese zuzugreifen, aber der einfachste Weg besteht darin, NSManagedObject-Unterklassen zu erzeugen (Editor-> Create NSManagedObject Subclass ...). Beim Füllen dieser Entität "Photo" wird die Keyword-Beziehung in der Eigenschaft "keywords" ausgefüllt.

3

Wenn die Schlüsselwörter definiert sind und der Benutzer sie aus einer definierten Liste auswählen kann, hätte ich kein Entitätsschlüsselwort verwendet. Tipp verwenden Sie immer singuläre Namen (Foto, Keyword). Ich würde die Schlüsselwörter in einem Plist haben und der Benutzer wählt einige, Sie könnten dann eine durch Komma getrennte Zeichenkette verursachen, um als Eigenschaft auf Foto zu speichern. Wie Joseph erwähnt hat, möchten Sie NSManagedObject ableiten, und ich würde dann eine Methode hinzufügen, die eine Zeichenfolge (Schlüsselwort) empfängt und eine BOOL zurückgibt, die angibt, ob dieses Schlüsselwort Teil der durch Kommas getrennten Schlüsselwortwerte in der Photo-Eigenschaft

war
Verwandte Themen