2016-05-31 11 views
7

Proszę, wyjaśnij mi, dlaczego dane podstawowe odmawiają tworzenia struktury pokazanej poniżej.CoreData: ograniczenia unikalności i jedna obowiązkowa odwrotna relacja

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

    * un - unique, opt - optional 

W pewnym dziale może pracować zero lub więcej pracowników, ale każdy pracownik musi pracować w jednym i tylko jednym dziale. Jest to oczywisty schemat dla MySql, na przykład. Dla danych podstawowych stworzyłem odwrotną zależność, aby uniknąć błędów konsystencji. Ale Rdzeń danych ma swoją własną wizję i to jest to, co mówi do mnie:

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

już znaleźć jakieś podejrzane rozwiązania sprawiają, że wszystkie stosunki (opcjonalne, usuwają wyjątkowy z Department.name i sprawdź to „programowo”, usunąć odwrotne relacje), ale chcę zrozumieć, gdzie popełniam błąd, a jeśli nie - co Apple próbuje powiedzieć z tą dziwną logiką?

+1

To powinno być związane z 'ze szczególnymi ograniczeniami, NSMergeByPropertyObjectTrumpMergePolicy nadpisuje wszystkie atrybuty, tylko nie ten relationships.', zobacz tutaj: http://dorianroy.com/blog/2015/09/how- do implementacji unikalnych ograniczeń w rdzeniu danych za pomocą ios-9/ – bteapot

+2

Dziękuję za odpowiedź, ale myślę, że to nie moja sprawa. 1) Nie korzystam z tej zasady, wszystkie błędy sprawdzania ograniczeń zgłaszają wyjątki i 2) jest to błąd podczas kompilacji, dane podstawowe "nie lubią" mojego schematu danych, a aplikacja nie może go skompilować. – Anton

+0

Konflikty unikalnych ograniczeń są podobne do konfliktów scalania, nie są to unikalne indeksy SQL – malhal

Odpowiedz