Gibt es eine Möglichkeit zu verhindern, dass abstrakte Entitäten im Diagrammeditor in XCode 7 angezeigt werden? Alle meine Entitäten erben von super abstrakten Entitäten, und das Diagramm ist überladen, weil die abstrakten Entitäten im Diagramm mit Pfeilen angezeigt werden, die die Vererbung für ihre untergeordneten Klassen anzeigen. Kann das geändert werden?XCode: Abstrakte Entitäten aus dem Core Data-Diagramm ausschließen
Antwort
Nein, dies kann nicht geändert werden. Sie können das Diagramm nur in einem anderen Programm neu zeichnen.
Dieses Problem weist jedoch auf ein anderes Problem hin: Wenn Sie die meisten Ihrer Entitäten von einer übergeordneten Entität geerbt haben, sollten Sie beachten, dass diese alle in derselben SQLite-Tabelle gespeichert werden. Dies könnte möglicherweise zu Leistungsproblemen führen und in jedem Fall die meisten Effizienzvorteile eliminieren, die sich dadurch ergeben, dass das Objektdiagramm im Hintergrund durch eine relationale Datenbank dargestellt wird.
Wenn also alle Ihre Entitäten beispielsweise ein sync
-Feld haben, sollten Sie dieses Attribut allen Entitäten hinzufügen oder ein anderes Schema finden, um den Synchronisierungsstatus zu verfolgen.
Danke für die Erklärung. Ich zeichnete das Diagramm von Hand, indem ich die Beziehungen befolgte. Ich hatte keine Ahnung, dass Entitäten, die von einer abstrakten Entitätsklasse erben, in derselben Tabelle gespeichert werden. Ich überdenke diese Strategie zugunsten des einfachen Kopierens der Attribute in alle Entitäten und des Modifizierens meiner Bequemlichkeitsmethoden, um die Entität als einen Parameter zu nehmen (anstatt Methoden auf der NSManagedObject-Subbasis zu sein und "self" innerhalb der Methoden zu verwenden). Allerdings scheint die Performance für den Moment völlig ausreichend, also werde ich es nach Gehör spielen. – mashers
Apple verwenden Vererbung immer in ihren Apps, es ermöglicht ihnen, mehrere Entitäten von einem einzelnen Abruf, z. In Notes rufen sie Accounts und Ordner ab, indem sie ihre übergeordnete Entität abrufen, die Container, mächtiges Zeug ist. Entwerfen Sie Ihr Modell anhand dessen, wie es in Ihrer Benutzeroberfläche angezeigt wird, anstatt es wie eine relationale Datenbank zu betrachten. – malhal
@malhal Nun, ja, aber die Notes App ist kein gutes Beispiel, da sie nur sehr wenige Einträge enthält und das Schema nicht gut skalierbar ist. Niemand wird 100.000 Noten haben, wahrscheinlich nicht einmal 100. Wie gesagt, es ist ein ausgezeichnetes Beispiel, um die Kompromisse zu illustrieren. – Mundi
- 1. Ausschließen von Drittanbieter-Pods-Bibliotheken aus dem XCode UI-Testbericht
- 2. Klasse aus dem Debugging ausschließen
- 3. Eine Konfigurationsdatei aus dem Merge-Prozess ausschließen
- 4. Ausschließen einer Datei aus dem Git-Status
- 5. Ausschließen von Eingaben aus dem jqTransform-Plugin
- 6. Basisbibliothekseinschlüsse aus dem Doxygen-Abhängigkeitsdiagramm ausschließen?
- 7. JaCoCo - JSP aus dem Bericht ausschließen
- 8. Einige URLs aus dem Sitzungszeitlimit ausschließen
- 9. Ausschließen Code aus Coverage-Stats in Xcode 7
- 10. Ausschließen von Feldern aus dem Formular, das mit dem Objekt
- 11. Xcode 8 Core Data Anomalie
- 12. Core Data: Holen Sie alle Entitäten
- 13. Kann nicht Attribut für Entitäten in Core Data Set
- 14. Benutzerschnittstellenstatus kann nicht aus dem Commit in xcode
- 15. Artikel aus DataList ausschließen
- 16. Ordner aus htpasswd ausschließen
- 17. Aus zipgroupfileset ausschließen?
- 18. Ordner aus htaccess ausschließen
- 19. Ordner aus Github ausschließen
- 20. Dateien aus Weblogs ausschließen
- 21. Kinder aus Taxonomieausdruck ausschließen
- 22. Wie Sie Entitäten aus dem Datenspeicher mithilfe von pojo abrufen?
- 23. Verzeichnis aus dem Browser ausschließen, das mit .htaccess zwischenspeichert
- 24. Wie Sie Ihre eigene App aus dem Menü "Teilen" ausschließen?
- 25. ausschließen Spalte aus dem Export in jQuery Datentabellen
- 26. Eine Funktion aus dem importierten Paket entfernen (oder ausschließen)
- 27. Andere Skripte aus dem Debuggen in PhpStorm ausschließen
- 28. Android Studio Klasse oder Datei aus dem Jar ausschließen
- 29. Das Ausschließen von Zeilen mit fortlaufenden Nullen aus dem Datenrahmen
- 30. CPack: Install Befehle aus dem Unterverzeichnis (googeltest Verzeichnis) ausschließen
Ich glaube nicht. Was bieten Ihnen diese abstrakten Entitäten in Bezug auf echte Funktionalität? – Wain
Danke. Die abstrakten Entitäten stellen Attribute bereit, die von ihren untergeordneten Attributen gemeinsam genutzt werden. Die NSManagedObject-Unterklassen verfügen auch über bequeme Methoden, die ich hinzugefügt habe, um die Funktionen zu unterstützen, die für alle Entitätstypen gelten. – mashers
@mashers Sie können weiterhin die Klassenvererbung ohne Entitätsvererbung verwenden. Im Modelleditor schließen Sie die allgemeinen Attribute für jede Entität ein (und modellieren nicht die abstrakte Entität), aber in der Klassendefinition ändern Sie jede Unterklasse so, dass sie von der Klasse der abstrakten Entität erbt. – pbasdf