2017-02-03 1 views
1

Ich bin sehr vertraut mit Core Data, aber ich habe keine praktische Verwendung für Core Data Beziehungen gefunden. Ich weiß konzeptionell, was sie tun sollten, aber sie scheinen nichts durchzusetzen. Standardkonzepte wie Primär-/Fremdschlüssel, kaskadierende Löschvorgänge und das Löschen eines Wertes, der aufgrund von Beziehungseinschränkungen nicht möglich sein sollte, werden nicht erzwungen.Werden Kerndatenbeziehungen in der realen Welt verwendet?

Liest ich alles falsch? Haben Kerndatenbeziehungen tatsächlich durchsetzbare Einschränkungen?

+0

Dies könnte helfen: "Wie Validierung in Core Data funktioniert" in der [Object Validation] (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/ObjectValidation.html#// apple_ref/doc/uid/TP40001075-CH20-SW1) Abschnitt des Handbuchs Core Data Programming. – pbasdf

Antwort

2

Ja, Sie können die Beziehung steuern, indem Sie verschiedene Löschregeln festlegen.

für weitere Informationen über die verfügbaren Konfigurationspunkte mit diesem Handbuch konsultieren: Creating Managed Object Relationships

Es erwähnenswert ist, dass die Regeln nur während save() durchgesetzt werden.

+1

Danke. Die ganze Welt der Core Data-Beziehungen funktioniert also nur während eines Save()? Ich denke, ich war nicht weit davon entfernt, über dieses Thema nachzudenken. – 4thSpace

+0

Überprüfen Sie auch diese Antwort, es hat einige praktische Beispiele: http://stackoverflow.com/questions/14837832/when-does-core-data-nullify-rule-update-relations – hybridcattt

4

Sie scheinen Core Data im SQL-Stil zu denken, was ein Fehler ist. Seine API ist nicht SQL-ish, obwohl es oft als etwas wie eine Datenbank verwendet wird.

Die meisten direkten-- Fremdschlüssel sind kein "Standardkonzept", außer Sie gehen davon aus, dass Core Data den SQL-Regeln folgen sollte. Beziehungen in Kerndaten werden in der Regel anstelle von Fremdschlüsseln verwendet. Sie verwenden die Beziehung, um anzugeben, dass ein Objekt mit einem anderen Objekt verknüpft ist. Es ähnelt dem, wie SQL einen Fremdschlüssel verwendet, um einen Eintrag in einer Tabelle mit einem Eintrag in einer anderen Tabelle in Beziehung zu setzen, aber das ist nicht dasselbe.

Werden sie in der "realen Welt" verwendet? Natürlich - Core Data wäre viel weniger nützlich, wenn es keine Beziehungen hätte. Sie sind das Core Data-Äquivalent eines Objekts mit einer Eigenschaft, die ebenfalls ein Objekt ist.

Verwandte Themen