2010-01-25 14 views
7

Angenommen, ich habe vier Entitäten in meinem Datenmodell: Person, Auto, Haustier und Foto. Ich hätte gerne eine Beziehung von Person Car und Pet zur Photo-Entität, in der ich möchte, dass jedes dieser Dinge ein Foto von diesem Gegenstand enthält. Bis jetzt keine Probleme. Aber wo es schwierig wird, ist die umgekehrte Beziehung, wo die Photo-Entity auf das angefügte Element verweisen möchte. Ich würde es vorziehen, entweder überhaupt keine inverse Beziehung zu haben, so dass das einzige Attribut in Photo eine UIImage wäre, oder vielleicht eine einzige angefügte umgekehrte Beziehung. Wenn ich das tue, könnte ich nur eines dieser Elemente auswählen, um es an meine Beziehung anzuhängen.Kerndaten: Eine inverse Beziehung zu mehreren Entitäten?

Wäre es besser, dies als eine unidirektionale Beziehung zu verlassen? Vielleicht könnte ich eine abstrakte Entity mit dem Namen "AttachableItem" erstellen und Person Car und Pet zu Kindern machen und dann meine umgekehrte Beziehung auf AttachableItem zeigen. Ich bin mir nicht sicher, welcher Weg am besten wäre.

Antwort

12

Ich würde Photo eine abstrakte Entität machen und PersonPhoto, CarPhoto und PetPhoto Entitäten jedes mit Foto als seine Elterneinheit erstellen.

Person, Auto und Haustier hätten eine direkte Beziehung mit PersonPhoto, CarPhoto bzw. PetPhoto. Dann könnten PersonPhoto, CarPhoto und PetPhoto jeweils eine einzige umgekehrte Beziehung mit Person, Auto bzw. Haustier haben.

Die Photo-Entity hätte immer noch das einzige Attribut. Sie können die Bilder im Dokumentverzeichnis Ihrer App in Dateien speichern und den Dateinamen als dieses Attribut speichern. Dieser Ansatz wird in this answer empfohlen. Alternativ können Sie Bilder direkt in Core Data als transformierbares Attribut speichern, indem Sie sie unter Verwendung von UIImagePNGRepresentation() oder UIImageJPEGRepresentation() in NSData konvertieren.

+0

Super Antwort Mann. Mein gesamtes Modell wurde nach dem Lesen vereinfacht –

Verwandte Themen