una tipo tendencia sirve que parabola para pairs línea libreria letra hacer graficos graficar como agregar core-data

core data - tendencia - Datos básicos: relación inversa para dos relaciones con el mismo tipo



para que sirve plot (2)

Es mucho mejor tener una relación de uno a muchos entre la Hoja y el Texto con un límite de validación de 2. Luego, debe tener una propiedad de tipo en el texto que lo declara como una privacyNotes o un privacyNotes termsOfUse . Desde allí puede agregar métodos de conveniencia a su subclase de Hoja que le permite recuperar cualquiera de los dos.

Hola, en mi aplicación Modelo de datos básicos Tengo entidades de hoja y texto. La entidad de la hoja puede tener dos Text''s: privacyNotes y termsOfUse. Ambos de tipo de texto. Por lo tanto, en XCode Data Modeler creo relaciones one-one llamadas "privacyNotes" y "termsOfUse" en la hoja con destino de texto. Lo siguiente va a la "hoja" de una relación en el texto. Luego selecciono esa relación de Text.sheet como inversa para Sheet.privacyNotes. Hasta ahora tan bueno. Pero cuando configuro la misma relación Text.sheet como inversa para Sheet.termOfUse XCode borra esta relación como Sheet.privacyNotes inversa! Entiendo que las relaciones en DB pueden no ser tan simples en comparación con las relaciones de objetos de Objective-C, pero realmente no entiendo por qué SQLite o (CoreData) no pueden reutilizar una relación como inversa para POCAS otras relaciones.


Un pequeño vistazo bajo la campana de abstracción podría ser esclarecedor *: una relación solo puede ser inversa para exactamente otra relación, ya que, en la tienda de respaldo, están representados por los mismos datos. Si un texto y una hoja pueden tener una cierta relación, Core Data hace lo que haría un buen modelador de datos humanos y almacena esa relación de la manera más sucinta posible. Las propiedades de relación de los objetos de entidad son solo formas de ver esa relación.

Para obtener el efecto de lo que está buscando: siga adelante y otorgue las propiedades de la hoja para privacyNote y termsOfUse; pero asigne propiedades de texto como sheetIAmTermsFor y sheetIAmPrivacyNoteFor, y configúrelas a la inversa de manera apropiada. Luego, en la clase Texto, agregue una propiedad sintética a lo largo de estas líneas:

// in interface @property (nonatomic, readonly) Sheet *sheet; // in impl -(Sheet *)sheet { if ([self sheetIAmTermsFor]) return [self sheetIAmTermsFor]; else return [self sheetIAmPrivacyNoteFor]; }

Si también desea escribir un setter, tendrá que decidir qué rol debe otorgarle al Setter (que Core Data no puede resolver por usted, otra razón por la cual una propiedad no puede ser la inversa de dos propiedades diferentes). .)

Si necesita imponer una restricción de que un Texto solo puede ser una "nota de privacidad" o "términos" pero nunca ambos, anule los configuradores de sheetIAmTermsFor y sheetIAmPrivacyNoteFor, siga el patrón de Apple en los documentos y haga que cada uno anule la otra propiedad cuando conjunto.

(* Apple considera que las bases de datos SQLite Core Data son privadas para su implementación, pero la inspección de sus esquemas puede ser muy educativa. Simplemente, no se sienta tentado a escribir el código de envío que va detrás de los CD para volver directamente a la base de datos).