Ich versuche, eine Reihe von Daten in einen CoreData-persistentenStore zu importieren. Dies sind schreibgeschützte Daten, die dem Benutzer zur Laufzeit angezeigt werden.CoreData Eins-zu-viele und inverse Beziehungsproblem
Ich habe eine Entität namens "Category", die eine Eins-zu-viele-Beziehung mit einer Entität namens "Item" hat, die wiederum eine inverse Beziehung zu einer Kategorie hat.
Wenn ich Elemente zum Kontext hinzufüge, wie verknüpfe ich sie mit der richtigen Kategorie? Ich kann in der SQLite dB sehen, dass es getan wird, indem ich ein Kategoriefeld der Item-Tabelle hinzufüge und wahrscheinlich den Primärschlüssel Kategorien für die Beziehung verwendet. Aber die PK ist hinter den Kulissen ... Gibt es eine Methode, um die Verbindung herzustellen?
ich auch in meiner Kategorie Klasse sehe, dass es Methoden, die von Coredata erzeugt sind für Artikel hinzufügen, aber ich gehe davon aus, dass diese alos hinter den Kulissen Methoden, die Coredata ermöglichen, die Beziehungen zu pflegen:
@interface Category (CoreDataGeneratedAccessors)
- (void)addItemObject:(Item *)value;
- (void)removeItemObject:(Item *)value;
- (void)addItems:(NSSet *)value;
- (void)removeItems:(NSSet *)value;
@end
Ich las im Programmierhandbuch, dass CoreData automatisch die andere Seite der Beziehung behandelt, aber ich kann nicht herausfinden, wie die erste Verknüpfung zu einer Kategorie funktioniert, wenn ich Items hinzufüge.
Dank
jk
Danke, unforgiven. Ich hatte das meiste bereits von einem anderen Beitrag auf einem anderen Brett herausgefunden, aber deine Antwort ist klar wie eine Glocke. Wish Apples Docs waren besser! Jetzt muss ich lernen, wie man Elemente für eine bestimmte Kategorie abruft, und ich bin zu Hause frei! jk – Alpinista
Sie müssen der Abrufanforderung, die Sie zum Abrufen von Objekten aus der Element-Entität verwenden, ein NSPredikat zuordnen. Wenn Ihre Category-Entität den Namen der Kategorie als Eigenschaft speichert, verwenden Sie die To-One-Beziehung von Element zu Kategorie: NSPredicate * Prädikat = [NSPredicate-PrädikatWithFormat: @ "Kategorie.Name LIKE% @", IhreKategorieNameStringHere]; Ordnen Sie dieses Prädikat einfach der Abrufanforderung zu, die Sie zum Abrufen von Objekten aus der Entität Element verwenden. –
Danke nochmal, Unforgiven. Ich entdeckte, dass Sie auch aus der anderen Richtung gehen können: Wenn Sie die Kategorie haben, können Sie ein Array von Items aus dem NSSet der Items-Eigenschaft der Categorie erhalten. – Alpinista