2016-05-31 5 views
7

Per favore, spiegami, perché i dati di base negano di creare la struttura mostrata di seguito.CoreData: vincoli di unicità e relazione inversa obbligatoria a uno

|Employee |           |Department| 
    |------ | <<--(opt)-------inverse-------(non_opt)--> |----------| 
    |id (un) |           |name (un) | 
    |fullName | 

    * un - unique, opt - optional 

In alcuni reparti zero o più dipendenti possono lavorare ma ogni dipendente deve lavorare in uno solo in un reparto. Ad esempio, è uno schema ovvio per MySql. Per i dati di base ho creato una relazione inversa per evitare errori di coerenza. Ma Core Data ha la sua visione e questo è quello che dice di me:

error: Misconfigured Entity: Entity Department cannot have uniqueness constraints and to-one mandatory inverse relationship Employee.department

Ho già trovato alcune soluzioni sospetti (rendere tutti i rapporti opzionale, rimuovere unico da Department.name e verificarle "programmazione", rimuovere relazioni inverse), ma voglio capire, dove sbaglio o se no - cosa sta cercando di dire Apple con questa strana logica?

+1

Dovrebbe essere correlato a 'con vincoli univoci, NSMergeByPropertyObjectTrumpMergePolicy sovrascrive tutti gli attributi, non solo il relationships.', vedere qui: http://dorianroy.com/blog/2015/09/how- to-implement-unique-constraints-in-core-data-with-ios-9/ – bteapot

+2

Grazie per la risposta, ma penso che non sia il mio caso. 1) Non uso questa politica, tutti i vincoli controllano gli errori generano eccezioni e 2) questo è un errore in fase di compilazione, i dati di base "non mi piacciono" il mio schema di dati e l'applicazione non possono costruire con esso. – Anton

+0

I conflitti di vincoli univoci sono come conflitti di unione, non sono indici univoci SQL – malhal

risposta

0

I vincoli univoci assicurano che i record in un'entità siano univoci per i campi specificati. Ma i vincoli unici e le relazioni To-Many portano a molti problemi strani durante la risoluzione dei conflitti.

ad es. "Riferimento ciondolante a un oggetto non valido."

Questo post è fondamentalmente focalizzato su un piccolo problema che potrebbe richiedere giorni per risolvere.

http://muhammadzahidimran.com/2016/12/08/coredata-unique-constraints-and-to-many-relationship/